使用Javascript对包含年份的字符串数组进行排序
我试图按季节和年份对一系列季节进行排序,同时删除重复的季节。这样做是不够的,我想我需要一个正则表达式,但无法完成它使用Javascript对包含年份的字符串数组进行排序,javascript,lodash,Javascript,Lodash,我试图按季节和年份对一系列季节进行排序,同时删除重复的季节。这样做是不够的,我想我需要一个正则表达式,但无法完成它 const myStringArray=[“冬季17”、“夏季13”、“冬季15”、“夏季12”、“冬季17”、“夏季12”、“夏季17”] console.log(q.uniq(myStringArray).sort(函数(a,b)){ 返回b-a; })); 您可以这样尝试: const myStringArray=[“冬季17”、“夏季13”、“冬季15”、“夏季12”、
const myStringArray=[“冬季17”、“夏季13”、“冬季15”、“夏季12”、“冬季17”、“夏季12”、“夏季17”]
console.log(q.uniq(myStringArray).sort(函数(a,b)){
返回b-a;
}));代码>
您可以这样尝试:
const myStringArray=[“冬季17”、“夏季13”、“冬季15”、“夏季12”、“冬季17”、“夏季12”、“夏季17”]
console.log(q.uniq(myStringArray).sort(函数(a,b)){
返回b.split(“”)[1]-a.split(“”)[1]|a.localeCompare(b);
}));代码>
您可以按年份排序,然后获取已创建数组的索引,该数组设置季节顺序。要使数组唯一,只需使用一个新集合
const myStringArray=[…新设置([“冬季17”、“夏季13”、“冬季15”、“夏季12”、“冬季17”、“夏季12”、“夏季17”)];
常量顺序=[‘冬季’、‘夏季’、‘秋季’、‘春季’];
myStringArray.sort((a,b)=>{
设s=b.split(/\s/);
设s1=a.split(/\s/);
返回编号(s1[1])-编号(s[1])| |顺序.indexOf(s[0])*-1;
});
console.log(myStringArray)
如果您确定字符串的格式始终为
,并且数字只出现一次,则可以使用快速简单的正则表达式对desc进行排序:
const myStringArray=[“冬季17”、“夏季13”、“冬季15”、“夏季12”、“冬季17”、“夏季12”、“夏季17”]
console.log(q.uniq(myStringArray).sort(函数(a,b)){
返回+b.match(/\d+/)[0]-+a.match(/\d+/)[0];
}));代码>
预期的结果是什么?当值是字符串而不是数字时,您希望返回b-a
如何工作?为什么要将数组转换为集合,然后将集合转换为数组?@Barmar我不知道如何对集合进行排序-是吗?不,这没有意义。为什么您首先要创建集合,而不是仅创建const myStringArray=[“冬季17”、“夏季13”、“冬季15”、“夏季12”、“冬季17”、“夏季12”、“夏季17”]代码>@Barmar,因为op明确要求唯一性。否则数组就不存在了unique@Barmar啊,这就是你的意思。。。我只是喜欢使用内置软件,而不是像sharm、tkx那样的librariesWorks