嵌套数组操作怪异行为,JS

aga井原里

我有一张细胞表,需要根据我得到的数据在几个特定位置进行处理


let arr = Array(3).fill(Array(3).fill(0));

[{x: 0, y: 0, value: 1}, {x: 1, y: 0, value: 2},{x: 2, y: 0, value: 3}].map(pos => 
   arr[pos.x][pos.y] = pos.value
)
   console.log(arr)

我希望代码能够给出,[[1,0,0],[2,0,0],[3,0,0]]但是相反,它给出[[3,0,0],[3,0,0],[3,0,0]],换句话说,它将所有内容绘制为最后一个y(值3),并且[pos.x]由于某种原因而忽略,不确定原因。

我希望获得一些可能的解决方法的帮助,以解释为什么此代码无法按预期工作

提前致谢!

尝试以下方法:

var arr = Array.from({length:3},()=>Array(3).fill(0));
[{x: 0, y: 0, value: 1}, {x: 1, y: 0, value: 2},{x: 2, y: 0, value: 3}].map(pos => 
  arr[pos.x][pos.y] = pos.value
)
console.log(arr);

Array.from()方法从array-likeiterable对象创建一个新的,浅表复制的Array实例

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章