簡體   English   中英

我想將排名設置為數組值?

[英]I want to set rank to array value?

我嘗試從數組中創建新數組 object,根據其值設置排名。 如果值相同,則設置相同的排名,如果下一個值不同,則通過跳過相同的排名長度來設置排名。

預期結果是

[ {“排名”:1,“數據”:45 },{“排名”:2,“數據”:33 },{“排名”:3,“數據”:8 },{“排名”:4, “數據”:5 },{“排名”:4,“數據”:5 },{“排名”:6,“數據”:2 }]

 var data = [8,5,2,33,5,45]; var rankList = []; var uniqueList = []; var rank = 0; var sameRank = 0; data.sort(function(a,b) { return b - a; }); for(var i in data) { if(uniqueList.includes(data[i])) { rank++; rankList.push({rank: sameRank, data: data[i]}); continue; } rank++; sameRank++; rankList.push({rank: rank, data: data[i]}); } console.log(rankList);

對數組進行排序后,使用.map創建另一個對象數組,跟蹤使用的最后rankdata 如果新數據相同,則使用相同的排名(取自先前迭代的排名) - 否則,使用當前迭代索引加 1:

 const data = [8, 5, 2, 33, 5, 45]; data.sort((a, b) => b - a); let lastRank = 0; let lastData; const output = data.map((data, i) => { const objToReturn = { data }; objToReturn.rank = data === lastData? lastRank: i + 1; lastData = data; lastRank = objToReturn.rank; return objToReturn; }); console.log(output);

暫無
暫無

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

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