繁体   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