首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript排序包含年份的字符串数组,使用

Javascript排序包含年份的字符串数组,使用
EN

Stack Overflow用户
提问于 2017-12-29 17:51:10
回答 3查看 54关注 0票数 1

我正在尝试按季节和年份对季节数组进行排序,同时删除重复的季节。排序是不够的,我想我需要使用正则表达式,但无法完成

代码语言:javascript
复制
const myStringArray = ["Winter 17", "Summer 13", "Winter 15", "Summer 12", "Winter 17", "Summer 12", "Summer 17"]
     
console.log(_.uniq(myStringArray).sort(function(a, b) {
    return b - a;                                  
}));
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-12-29 17:58:03

您可以像这样尝试:

代码语言:javascript
复制
const myStringArray = ["Winter 17", "Summer 13", "Winter 15", "Summer 12", "Winter 17", "Summer 12", "Summer 17"]

console.log(_.uniq(myStringArray).sort(function(a, b) {
  return b.split(' ')[1] - a.split(' ')[1] || a.localeCompare(b);
}));
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

票数 2
EN

Stack Overflow用户

发布于 2017-12-29 17:58:39

可以按年份排序,然后获取创建的数组的索引,该数组设置季节的顺序。要使数组具有唯一性,只需使用新的集合

代码语言:javascript
复制
const myStringArray = [...new Set(["Winter 17", "Summer 13", "Winter 15", "Summer 12", "Winter 17", "Summer 12", "Summer 17"])];
const order = ['Winter', 'Summer', 'Fall', 'Spring'];

myStringArray.sort((a, b) => {
  let s = b.split(/\s/);
  let s1 = a.split(/\s/);
  return Number(s1[1]) - Number(s[1]) || order.indexOf(s[0]) * -1;
});

console.log(myStringArray);

票数 0
EN

Stack Overflow用户

发布于 2017-12-29 18:02:22

如果您确定您的字符串将始终采用<Season YY>格式,并且数字只会出现一次,您可以使用快速简单的正则表达式对desc进行排序:

代码语言:javascript
复制
const myStringArray = ["Winter 17", "Summer 13", "Winter 15", "Summer 12", "Winter 17", "Summer 12", "Summer 17"]
     
console.log(_.uniq(myStringArray).sort(function(a, b) {
    return +b.match(/\d+/)[0] - +a.match(/\d+/)[0];                                  
}));
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48020594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档