Javascript减少功能错误

时间:2018-02-17 10:07:04

标签: javascript reduce

我正在尝试使用JavaScript中的Reduce功能。我想通过过滤功能轻松完成我想要实现的功能,但我试图通过Reduce来实现。

我正在尝试检索年龄大于或等于18岁的所有人并将结果存储在数组中

take

然而,当我运行此代码段时,我收到一条错误,上面写着" TypeError:无法读取属性' push'未定义"。我不知道在哪里需要定义arr(我需要存储输出的数组)

3 个答案:

答案 0 :(得分:1)

试试这个:

您应该return arr,而不是return arr.push(ppl),因为[].push(3)返回1(新[]}而不是[3]。{{1与} reduce配合使用,在这种情况下,accumulatoraccumulator。因此,您应该arr而不是return arr;



return (arr.push(ppl))




答案 1 :(得分:0)

 return(arr.push(ppl));

arr.push返回数组的新长度时,它将返回一个数字。所以在下一次迭代arr将是一个数字,你不能推动它。所以你需要传递数组:

 const output = people.reduce((arr, person) => person.age > 17 ? arr.concat(person): arr, []);

那就像arr.concat一样返回一个数组。

答案 2 :(得分:0)

您可以使用array.concat推送到数组并返回它,并将其放入三元运算符中:

let people=[{name:"John",age:16},{name:"Thomas",age:20},{name:"Smith",age:18},{name:"Jessy",age:17}]

let output = people.reduce((arr,ppl) => {
    return ppl.age >= 18 ? arr.concat(ppl) : arr
},[])

console.log(output)