Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算多维数组中具有最高值属性的对象_Javascript_Arrays_Multidimensional Array - Fatal编程技术网

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)