【问题标题】:javascript variable in array 2d in nested loop is missing嵌套循环中数组 2d 中的 javascript 变量丢失
【发布时间】:2015-02-22 12:16:29
【问题描述】:

我创建动态表然后存储值。但我发现最终数组是错误的。 我想有人帮助和扩大问题。为什么 x in x before loop = [[]] 而不是 [["111", "0", "0"]]。

x = [];
$(document).on('click', '#save', function(event) {
    x.length = 0;
    var y = [];
    for (var m = 0; m < row; m++) {
      y.length = 0;
      console.log('x before loop = ',x);
      for (var n = 0; n < arr_stklist.length - 1; n++) {
        if (arr_stklist[n] == "text") {
          y.push(document.getElementById('arr_TextAns['+m+']['+n+']').value);
        } else if (arr_stklist[n] == "level") {
          y.push(document.getElementById('arr_LevelAns['+m+']['+n+']').value);
        } 
      }
      // console.log('y = ',y);
      // console.log('x before = ',x);
      x.push(y);
      // console.log('x after = ',x);
    }
    // console.log('final = ',x);
    event.preventDefault(); });

结果是

x before loop = []
y = ["111", "0", "0"]
x before = []
x after = [["111", "0", "0"]]
x before loop = [[]]
y = ["222", "0", "0"]
x before = [["222", "0", "0"]]
x after = [["222", "0", "0"], ["222", "0", "0"]]
final = [["222", "0", "0"], ["222", "0", "0"]]

我想要final是[["111", "0", "0"], ["222", "0", "0"]]

【问题讨论】:

    标签: javascript arrays multidimensional-array nested-loops


    【解决方案1】:

    您不断将相同的数组推送到xx.push(y) 不会复制数组,它只是推送对数组的引用。不要用y.length = 0 清空数组,而是用y = [] 分配一个新数组。

    【讨论】:

    • 哦!谢谢@Barmar 我明白了。
    猜你喜欢
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 2021-10-23
    • 1970-01-01
    相关资源
    最近更新 更多