找对象数组中某属性的最大值

5,416 阅读1分钟

引言

当数组里面元素是对象的时候,如何删选出某属性最大值的元素?

var array=[
  {
    "id": 52354541,
    "name": "比率",
    "value": "55"
},
{
    "id": 43563123,
    "name": "比率",
    "value": "88"
},
{
    "id": 32525763,
    "name": "比率",
    "value": "76"
}];

问题一  查找value最大值

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;
}
});

思路二

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

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

思路三

array.reduce((p,v) => p.value < v.value ? v : p).id ; // 43563123