从我的服务中,我返回一个对象数组:

     data = [{id:1, value:25},{id:2, value:30}, {id:3, value:15} ]


给定id:3的示例,我需要说的是,在这些数据中,基于值,我需要对数据进行排序,并且要知道id:3的排名为3rd(30、25、14-递减)。
最好的方法是什么?
任何帮助表示赞赏!

最佳答案

逻辑


使用数组的sort方法对数据数组进行排序


data.sort((a,b)=>{ return b.value - a.value })


如果a较低,则sorts将对象a置于较低的索引(按您要求的降序排列)


获取特定ID的索引


data.map((obj)=>{return obj.id;}).indexOf(target_id)


map方法将[{id:3},{id:1},...]转换为[3,1,]
indexOf方法找到数组中target_id首次出现的索引




全部一起

var target_id = 3
data.sort((a,b)=>{ return b.value - a.value })
var rank = data.map(function(e) { return e.id; }).indexOf(target_id);

10-07 19:02
查看更多