嵌套循环中数组2d中缺少javascript变量

嵌套循环中数组2d中缺少javascript变量,javascript,arrays,multidimensional-array,nested-loops,Javascript,Arrays,Multidimensional Array,Nested Loops,我创建动态表,然后存储值。但我发现最后的数组是错误的。 我想找个人来帮助解决这个问题。为什么循环之前x中的x=[]]不是[[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 befor

我创建动态表,然后存储值。但我发现最后的数组是错误的。 我想找个人来帮助解决这个问题。为什么循环之前x中的x=[]]不是[[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(); });

我希望最终结果是[[111,0,0],[222,0,0]]

您继续将同一数组推送到x上。x、 pushy不会复制数组,它只是将引用推送到数组。与其清空y.length=0的数组,不如分配一个y=[]的新数组。

Oh!谢谢@Barmar,我明白了。
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"]]