2017-03-28 52 views
3

我有对象对象数组有不同的重点,所以我想这个数组有最小值和最小值的需求寻找,然后找到对象

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' 
}] 

具有最小值的对象中的JavaScript得到数组对象我试图通过

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

,但我必须做出更多的过滤器获取对象

仅返回ID不是整个对象则是有直接的方法来找到对象吗?

+0

可能重复[比较JavaScript对象数组以获取最小/最大](http://stackoverflow.com/questions/8864430/compare-javascript-array-of-o bject-to-get-min-max) –

回答

5

您可以使用阵列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);

+0

感谢您的帮助 – Nitin

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

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/

0

其他选择可能是过滤你的阵列,你已经有了分钟“身份证”

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 min = Math.min.apply(Math, list.map(function (o) { 
 
       return o.id; 
 
      })); 
 
filtered = list.filter(function(elem){ 
 
    if(elem.id == min){console.log(elem);return elem;} 
 
})

+0

这个问题已经提到了基于'Math.min()'的结果过滤原始数组,并明确要求更直接的方法。 – nnnnnn