我正在尝试按季节和年份对季节数组进行排序,同时删除重复的季节。排序是不够的,我想我需要使用正则表达式,但无法完成
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;
}));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
发布于 2017-12-29 17:58:03
您可以像这样尝试:
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);
}));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
发布于 2017-12-29 17:58:39
可以按年份排序,然后获取创建的数组的索引,该数组设置季节的顺序。要使数组具有唯一性,只需使用新的集合
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);
发布于 2017-12-29 18:02:22
如果您确定您的字符串将始终采用<Season YY>
格式,并且数字只会出现一次,您可以使用快速简单的正则表达式对desc进行排序:
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];
}));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
https://stackoverflow.com/questions/48020594
复制相似问题