从我的服务中我返回一个对象数组:
data = [{id:1, value:25},{id:2, value:30}, {id:3, value:15} ]
鉴于id:3示例,我需要说在这些数据中,基于值,我需要对数据进行排序并知道id:3排名第3(30,25,14 - 递减)。 这样做最好的方法是什么? 任何帮助表示赞赏!
答案 0 :(得分:1)
只需使用.sort
超过值之间的差异:
const data = [{id:1, value:25},{id:2, value:30}, {id:3, value:15} ];
data.sort(({ value: vA }, { value: vB }) => vB - vA);
console.log(data);
如果你需要弄清楚等级,只需在数组排序后迭代它:
const data = [{id:1, value:25},{id:2, value:30}, {id:3, value:15} ];
data.sort(({ value: vA }, { value: vB }) => vB - vA);
data.forEach((item, i) => console.log(`Rank ${i + 1}: ${JSON.stringify(item)}`));
答案 1 :(得分:0)
data
.map(function(d,i){return {index:d.id,value:d.value}})
.sort(function(a,b){return b.value - a.value})
.map(function(d,i){return data[d.index-1]})
答案 2 :(得分:0)
使用sort
数组方法
backPrevious
data.sort((a,b)=>{ return b.value - a.value })
较低(按照您要求的降序排序),则将对象a
放在较低的索引处获取特定ID的索引
a
data.map((obj)=>{return obj.id;}).indexOf(target_id)
方法将[{id:3},{id:1},...]转换为[3,1,] map
方法查找数组indexOf