此代码如何在具有reduce函数的上下文中工作



对于这里的人来说,这可能是一个非常基本的问题,但我不得不回避。所以我最近在学习reduce,我在这个例子中找到了一个对象数组中某个值的最大值。请看一下这个代码。

var pilots = [
{
id: 10,
name: "Poe Dameron",
years: 14
}, {
id: 2,
name: "Temmin 'Snap' Wexley",
years: 30
}, {
id: 41,
name: "Tallissan Lintra",
years: 16
}, {
id: 99,
name: "Ello Asty",
years: 22
}
];

如果我写这样的东西来寻找最长年份,

var oldest_of_them_all = pilots.reduce(function (old, current) {
var old = (old.years > current.years) ? old.years : current.years;
return old
})

我得到22作为我的价值,如果我不涉及房地产年份,即-

var oldest_of_them_all = pilots.reduce(function (old, current) {
var old = (old.years > current.years) ? old : current;
return old
})

我得到对象对象{id:2,名称:"Temmin‘Snap’Wexley",年份:30}作为我的值。有人能解释为什么第一个例子是错误的吗?里面发生了什么?此外,如果我只想获取年份值,我该怎么做?提前谢谢。

在第一个示例中,由于没有返回对象,因此在第一次迭代后,累加器(old(没有对象属性(年份。因此,没有年份属性可供比较。

PD_5

最新更新