Javascript 计算多维数组中具有最高值属性的对象
我有一个多层数组,我想在其中计算包含特定属性的最高值的对象Javascript 计算多维数组中具有最高值属性的对象,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我有一个多层数组,我想在其中计算包含特定属性的最高值的对象 let arr = [{ id: 1, card: { firstName: 'John', lastName: 'Smith', info: { age: 36, height: 152 } } }, { id: 2, card: { firstName: 'Dan',
let arr = [{
id: 1,
card: {
firstName: 'John',
lastName: 'Smith',
info: {
age: 36,
height: 152
}
}
}, {
id: 2,
card: {
firstName: 'Dan',
lastName: 'Hislop',
info: {
age: 38,
height: 155
}
}
}, {
id: 3,
card: {
firstName: 'Mary',
lastName: 'Walter',
info: {
age: 29,
height: 122
}
}
}]
我希望能够计算该数组中包含最高age
值的顶级对象,并返回该对象
目前我能做的最好的事情就是找到最高的值并单独返回该值:
let oldest = Math.max.apply(Math, arr.map(obj =>
obj.card.info.age) )
但我想要整个物体
感谢您的帮助。这是一个案例:
arr.reduce((上一个,当前)=>prev.card.info.age
这并没有什么神奇之处,我们只是一次看两个物体,然后继续看一个年龄更大的物体。一个好的旧for循环在我看来很完美:
var i,xs,max;
xs=[{value:3},{value:1},{value:4},{value:2}];
对于(i=0;ixs[max].value){
max=i;
}
}
console.log(xs[max])代码>减少,减少,一直减少。。。当然,你可以用reduce做任何事情,几乎所有一个好的for循环可以做的事情,而不是更多。看起来好像有什么神奇的东西在背后减少,这是恼人的x-)不,不是。他从@Pranav C Balan那里得到的答案是。reduce是一种过度使用。这个reduce只是比较两个对象,并返回一个具有更高年龄的对象。Pranav的注释返回最大值,而不是对象,但我们需要对象。我发现应用比减少更难阅读。
arr.reduce((prev, curr) => prev.card.info.age < curr.card.info.age ? curr : prev)