簡體   English   中英

JavaScript包含年份的字符串排序數組使用

[英]Javascript sort array of strings containing year using

我正在嘗試按季節和年份對一系列季節進行排序,同時刪除重復的季節。 排序還不夠,我想我需要使用正則表達式,但無法完成

 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> 

您可以這樣嘗試:

 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> 

您可以按年份排序,然后獲取設置季節順序的已創建數組的索引。 要使數組唯一,只需使用一個新的Set

 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); 

如果您確定您的字符串將始終采用<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> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM