reduce 中的第 4 个参数
4th argument in reduce
函数如下:
function chunk(array: number[], size: number): number[][] {
return array.reduce((chunks, curr, _, arr) => {
console.log(arr.length); // -> 10 which is correct
// let len = arr.length; // -> Cannot read properties of undefined (reading 'length')
let len = chunks.length; // this works
if (len === 0 || chunks[len - 1].length === size) chunks.push([curr]);
else chunks[len - 1].push(curr);
return chunks;
}, []);
}
console.log(chunk([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 3)); // ->[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ], [ 10 ] ]
reduce
的第四个参数是我们迭代的数组。我可以记录它并得到正确的结果 (10) 见上文。但是当我尝试使用它并将它分配给一个变量时,我得到了一个错误(见上文)。有人可以解释一下吗?
从Mozilla's page开始,第四个参数是被归约的数组。您应该访问已声明的 array
变量,但第四个参数有效。
例如:
array.reduce((_, __, ___, arr) => {
console.log(arr.length == array.length) // true, this is the source array
});
您收到错误的原因不是 arr.length
属性,而是您访问块的方式。
函数如下:
function chunk(array: number[], size: number): number[][] {
return array.reduce((chunks, curr, _, arr) => {
console.log(arr.length); // -> 10 which is correct
// let len = arr.length; // -> Cannot read properties of undefined (reading 'length')
let len = chunks.length; // this works
if (len === 0 || chunks[len - 1].length === size) chunks.push([curr]);
else chunks[len - 1].push(curr);
return chunks;
}, []);
}
console.log(chunk([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 3)); // ->[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ], [ 10 ] ]
reduce
的第四个参数是我们迭代的数组。我可以记录它并得到正确的结果 (10) 见上文。但是当我尝试使用它并将它分配给一个变量时,我得到了一个错误(见上文)。有人可以解释一下吗?
从Mozilla's page开始,第四个参数是被归约的数组。您应该访问已声明的 array
变量,但第四个参数有效。
例如:
array.reduce((_, __, ___, arr) => {
console.log(arr.length == array.length) // true, this is the source array
});
您收到错误的原因不是 arr.length
属性,而是您访问块的方式。