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

时间:2017-03-28 07:11:37

标签: 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'
}]

我试过

var minValue = Math.min.apply(Math, list.map(function (o) {
                return o.id;
            }))

但它只返回id而不是整个对象,然后我必须为get object

制作更多的过滤器

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

4 个答案:

答案 0 :(得分:6)

您可以使用数组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);

答案 1 :(得分:0)

使用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);

答案 2 :(得分:0)

您可以通过循环遍历数组来检查具有最低id的对象,可能不是最好的方法,但无论如何都是解决方案:

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 tmp = list[0].id;

list.forEach(function (entry) {
    if (entry.id < tmp) {
    tmp = entry;
  }
});

console.log(tmp);

https://jsfiddle.net/camgssk3/

答案 3 :(得分:0)

其他选项可能是过滤你的数组,因为你已经有了min“id”

public PartialViewResult GetDetails ( int id )
{
    List<VoInfoDetail> model = db.VoInfoDetails.Where( m => condition testing id here ).ToList();
    return PartialView("VoDetails", model);
}