我想找出一个包含数组中键的最小值的对象。
var tempArr = [{name: 'john', age: 23}, {name: 'jonny', age: 27}, {name: 'roony', age: 13}, {name: 'david', age: 33}];
我希望结果是
{name: 'roony', age: 13}
没有使用for循环有任何直接的方法来找出结果,就像我们可以为普通数组
做的那样例如: 如果数组是 -
var arr = [11,4,22,3,5,55];
我们可以通过以下方式实现目标:
Math.min.apply(null, arr)
答案 0 :(得分:3)
你应该使用reduce:
min = tempArr.reduce(function(previousValue, currentValue, index, array) {
return (currentValue.age < previousValue.age ? currentValue : previousValue);
});
任何涉及排序的解决方案都不是最理想的。
答案 1 :(得分:1)
@ antyrat的解决方案更明确,但我想我会提供另一种方式:
var people=[{name: 'john', age: 23}, {name: 'jonny', age: 27}, {name: 'roony', age: 13}, {name: 'david', age: 33}];
var youngestPerson=people.reduce(function(youngestPerson,person){
return person.age<youngestPerson.age ? person : youngestPerson;
},people[0]);
console.log(youngestPerson);
答案 2 :(得分:0)
是的,您可以使用sort
方法:
var tempArr = [{name: 'john', age: '23'}, {name: 'jonny', age: '27'}, {name: 'roony', age: '13'}, {name: 'david', age: '33'}];
tempArr = tempArr.sort( function( a, b ) {
var AgeA = parseInt( a.age, 10 );
var AgeB = parseInt( b.age, 10 )
if ( AgeA < AgeB ) return -1;
else if ( AgeA > AgeB ) return 1;
else return 0;
});
console.log(tempArr);
console.log(tempArr[0]); // is the record with smallest `age` value