Javascript从具有最小值的数组获取对象,并且需要查找最小值然后查找对象

Nit*_*tin 3 javascript jquery

我在对象中的对象数组有不同的键,所以我希望对象在该数组中具有最小值

list = [
{
'id':4,
'name':'nitin',
'group':'angularjs'
},
{
'id':1,
'name':'nitin',
'group':'angularjs'
},
{
'id':2,
'name':'nitin',
'group':'angularjs'
},
{
'id':3,
'name':'nitin',
'group':'angularjs'
}]
Run Code Online (Sandbox Code Playgroud)

我试过了

var minValue = Math.min.apply(Math, list.map(function (o) {
                return o.id;
            }))
Run Code Online (Sandbox Code Playgroud)

但它只返回id而不是整个对象然后我必须为get对象做更多的过滤器

有找到对象的直接方法吗?

abh*_*jia 7

您可以使用Array reduce方法:

var list = [
{
'id':4,
'name':'nitin',
'group':'angularjs'
},
{
'id':1,
'name':'nitin',
'group':'angularjs'
},
{
'id':2,
'name':'nitin',
'group':'angularjs'
},
{
'id':3,
'name':'nitin',
'group':'angularjs'
}];

var result = list.reduce(function(res, obj) {
    return (obj.id < res.id) ? obj : res;
});

console.log(result);
Run Code Online (Sandbox Code Playgroud)


Wee*_*oze 6

使用 Array#reduce()

list = [{
    'id': 4,
    'name': 'nitin',
    'group': 'angularjs'
  },
  {
    'id': 1,
    'name': 'nitin',
    'group': 'angularjs'
  },
  {
    'id': 2,
    'name': 'nitin',
    'group': 'angularjs'
  },
  {
    'id': 3,
    'name': 'nitin',
    'group': 'angularjs'
  }
];

let min = list.reduce((prev, curr) => prev.id < curr.id ? prev : curr);

console.log(min);
Run Code Online (Sandbox Code Playgroud)