数组填充行为奇怪吗?

时间:2020-05-14 17:33:29

标签: javascript arrays google-apps-script

我的代码中得到奇怪的结果。

function myFunction() {
  var arrT = new Array(2)
  arrT.fill('-');
  var arrR = new Array(4);
  arrR.fill(arrT);



  console.log(arrR); // returns [ [ '-', '-' ], [ '-', '-' ], [ '-', '-' ], [ '-', '-' ] ]
  arrR[0][1]='xxx'
  console.log(arrR); // returns [ [ '-', 'xxx' ], [ '-', 'xxx' ], [ '-', 'xxx' ], [ '-', 'xxx' ] ]

}

我需要一个预填充的2D数组(这里我将其定义为固定的,但通常会计算尺寸) 我以为我使用了fill方法,它似乎工作正常。 但是当我尝试在一个单元格中输入一个值时,所有行都被填充。

我做错了什么?我希望有[['-','xxx'],['-','-'],['-','-'],['-','-']]

在此先感谢

Filip

1 个答案:

答案 0 :(得分:1)

如果用数组arrR填充数组arrT,则arrR的所有元素将是arrT,而不是数组arrT的副本。将.map.slice()一起使用以进行复制:

  var arrT = new Array(2)
  arrT.fill('-');
  var arrR = new Array(4).fill(null).map(_=>arrT.slice());



  console.log(arrR); // returns [ [ '-', '-' ], [ '-', '-' ], [ '-', '-' ], [ '-', '-' ] ]
  arrR[0][1]='xxx'
  console.log(arrR); // returns [ [ '-', 'xxx' ], [ '-', '-' ], [ '-', '-' ], [ '-', '-' ] ]

相关问题