查找对象数组中某属性的最大值, 然后返回该项的其他属性值

有一个数组,里面装的都是对象.
var array=[
  {
    "id": 52354541,
    "name": "比率",
    "value": "55"
},
{
    "id": 43563123,
    "name": "比率",
    "value": "88"
},
{
    "id": 32525763,
    "name": "比率",
    "value": "76"
}];

如果是查找最大值 可以直接
Math.max.apply(Math, array.map(function(item) {return item.value})) // 88
但现在我想返回值不是value, 是id的话 该怎么修改这代码.


我现在用的代码是, 怎样写会更好呢??

          let max = 0;
          let maxId = '';
          res.data.map(item => {
            if(item.orgAccumulative > max) {
              max = item.orgAccumulative;
              maxId = item.id;
            }
          });
阅读 17k
3 个回答

可以先排序(从大到小排),然后取第一个对象

var array=[
  {
    "id": 52354541,
    "name": "比率",
    "value": "55"
},
{
    "id": 43563123,
    "name": "比率比率",
    "value": "88"
},
{
    "id": 32525763,
    "name": "满意比率",
    "value": "76"
}];
console.log(array.sort(function(a, b){return a.value < b.value})[0].id) // 43563123
array.reduce((p,v) => p.value < v.value ? v : p).id

Math.max.apply(Math, array.map(function(item) {return item.id}))

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题