Javascript JS中的数组拆分未按预期工作

Javascript JS中的数组拆分未按预期工作,javascript,arrays,split,Javascript,Arrays,Split,我有以下代码,console.log只是为了显示发生了什么 函数拆分块(数组、部件){ 让结果=新数组(部分)。填充([]); array.map((e,i)=>{console.log(“r[”,i%parts,“]获取->”,e)|结果[i%parts].push(e)}) 返回结果; } 使用arr=[0…11] 预期结果将是: [ [0, 4, 8], [1, 5, 9], [2, 6, 10], [3, 7, 11], ] 这里的问题是fill()数组方法通过引用传递,而不是值,因

我有以下代码,console.log只是为了显示发生了什么

函数拆分块(数组、部件){
让结果=新数组(部分)。填充([]);
array.map((e,i)=>{console.log(“r[”,i%parts,“]获取->”,e)|结果[i%parts].push(e)})
返回结果;
}
使用
arr=[0…11]

预期结果将是:

[
[0, 4, 8],
[1, 5, 9],
[2, 6, 10],
[3, 7, 11],
]

这里的问题是
fill()
数组方法通过引用传递,而不是值,因此它实际上是传递给每个子数组的完全相同的“deep”对象,而不是每次传递新对象

快速解决方法是先使用
fill()
,然后使用
map()
新数组:

函数拆分块(数组、部件){
让result=Array(parts.fill().map(e=>[]);
map((e,i)=>{result[i%parts].push(e)});
返回结果;
}

“fill”传递一个引用,因此
结果中的每个数组都是“相同”数组请在有机会时检查我的解决方案,并让我知道此解决方案是否适用于您。@DiegoVallejo还值得一提的是,我认为您不需要在此处使用
新的
运算符,因为
数组(长度)
将同样适用,生成一个新数组。