javascript - 使用 JavaScript 将数组填充到特定索引处的二维数组中

标签 javascript arrays

我想用特定索引处的项目填充二维数组的内部数组。本例中的问题是每个内部数组都填充了该项目。

尝试:link_to_code_img

结果:link_to_result_img

代码:

Array.prototype.repeat= function(what, L){
  while(L) this[--L]= what;
  return this;
};

var yearsdays = [].repeat([], 365);

for(var i = 0; i<= yearsdays.length; i++){
   if(i === 99) {
      yearsdays[i].push(99)
   }
}

结果:

Array[365]
  [0 … 99]
     0: Array[1]
       0: 99
       length: 1
       __proto__: Array[0]

     1: Array[1]
       0: 99
       length: 1
       __proto__: Array[0]

     2: Array[1]
       0: 99
       length: 1
       __proto__: Array[0]

     and etc.......

问题是,结果yeardays中的每个数组都填充了数字99,但不仅仅是我期望的索引为99的数组。我做错了什么?

最佳答案

正如 Redu 在评论中所说

Your inner arrays are all references of each other

你可以这样摆脱这个问题。它以某种方式克隆了数组,因此引用是不同的。

Array.prototype.repeat= function(what, L){
  while(L) this[--L]= what.slice(0); // <--- Here
  return this;
};

关于javascript - 使用 JavaScript 将数组填充到特定索引处的二维数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37628778/

相关文章:

javascript - React-Native:虽然前面有声明,但 undefined 不是对象

javascript - 代码审查 : Deep filter array of objects concisely in Javascript

java - JsonArrayBuilder 给出空白输出

javascript - Ajax 与 chrome 扩展

javascript - document.getElementsByClassName 不像 getElementById 那样工作

javascript - 出现滚动条时的事件监听器/CSS伪类

javascript - 如何根据另一个元素的预期滚动距离添加到scrollTop

javascript - 如何访问多维 JSON 数据?

c++ - 为什么指针衰减优先于推导的模板?

c - C 中的二维数组和图像平滑