Array.prototype.reduce() 在一个元素的数组上
Array.prototype.reduce() on arrays of one element
在接下来的reduction + map
次操作中,没有。 3让我很困惑。谁能解释一下为什么
// 1
[1,2,3,4,5].filter(x => x==3).reduce((x, y) => y) // -> 3, all good
// 2
[1,2,3,4,5].filter(x => x<=3).reduce((x, y) => 0) // -> 0, still good
// 3
[1,2,3,4,5].filter(x => x==3).reduce((x, y) => 0) // -> 3, hello?
换句话说:为什么一个元素数组的归约会忽略映射到0
操作?这最终将用于对象数组,如 .reduce((x,y) => y.attr)
中的 returns y
而不是单个元素数组的 y.attr
。
过滤后的数组仅包含一个元素,因此 reduce 将 return 该值。
阅读文档:
If the array has only one element (regardless of position) and no initialValue was provided, or if initialValue is provided but the array is empty, the solo value would be returned without calling callback.
更多:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
在接下来的reduction + map
次操作中,没有。 3让我很困惑。谁能解释一下为什么
// 1
[1,2,3,4,5].filter(x => x==3).reduce((x, y) => y) // -> 3, all good
// 2
[1,2,3,4,5].filter(x => x<=3).reduce((x, y) => 0) // -> 0, still good
// 3
[1,2,3,4,5].filter(x => x==3).reduce((x, y) => 0) // -> 3, hello?
换句话说:为什么一个元素数组的归约会忽略映射到0
操作?这最终将用于对象数组,如 .reduce((x,y) => y.attr)
中的 returns y
而不是单个元素数组的 y.attr
。
过滤后的数组仅包含一个元素,因此 reduce 将 return 该值。
阅读文档:
If the array has only one element (regardless of position) and no initialValue was provided, or if initialValue is provided but the array is empty, the solo value would be returned without calling callback.
更多:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce