【发布时间】:2021-07-06 09:04:07
【问题描述】:
我需要将一个简单的平面数组“转换”为二维数组,然后我继续查看它对参数的看法。
我尝试重新创建this answer的代码,我得到了这个错误:
console.log(array.reduce((twoDArray, n, i) => (i % 3 == 0 ? twoDArray.push([n]) : twoDArray[twoDArray.length-1].push(n)), []));
^
TypeError: Cannot read property 'push' of undefined
问题是我没有在箭头函数的末尾添加&& twoDArray。在这里你可以看到:
let array = [1,2,3,4,5,6,7,8,9];
// this works
console.log(array.reduce((twoDArray, n, i) => (i % 3 == 0 ? twoDArray.push([n]) : twoDArray[twoDArray.length-1].push(n)) && twoDArray, []));
// here the second push() throws an error
console.log(array.reduce((twoDArray, n, i) => (i % 3 == 0 ? twoDArray.push([n]) : twoDArray[twoDArray.length-1].push(n)), []));
现在我不明白几件事,即:
-
&& twoDArray是如何工作的?它的目的是什么? - 如果仅将它放在 生成错误的
push()之后,如何修复错误。代码在到达&&之前不应该抛出错误吗?
【问题讨论】:
标签: javascript arrays push reduce logical-and