Javascript 当我知道我的值有长度时,为什么数组的每个索引都没有定义

Javascript 当我知道我的值有长度时,为什么数组的每个索引都没有定义,javascript,arrays,debugging,Javascript,Arrays,Debugging,我编写了一个函数,将一个值放置到[rows+I],并且知道我设置的每个值都有一个变量。我不明白为什么,当我取每个数组的长度并将其作为唯一索引放置在以前的空数组中时,其值为undefined 我的bug会出现在代码的这一部分;我已经查找了bug,但还没有找到它。这不是全部代码,只是我认为bug可能出现的部分: var aLength = []; for (var i = 0; i < arrays.length; i++) aLength[i] = window["rows2

我编写了一个函数,将一个值放置到[rows+I],并且知道我设置的每个值都有一个变量。我不明白为什么,当我取每个数组的长度并将其作为唯一索引放置在以前的空数组中时,其值为undefined

我的bug会出现在代码的这一部分;我已经查找了bug,但还没有找到它。这不是全部代码,只是我认为bug可能出现的部分:

  var aLength = [];
  for (var i = 0; i < arrays.length; i++)
    aLength[i] = window["rows2"+i].length;
  return aLength;
} // this is where my ends
console.log(width(arrays));
//[未定义,未定义,未定义,未定义]

完整代码:

var arrays = [[111111, 22222, 333], [444444444, 534334, 63], [73, 83748395, 9343], [279571, 327894598571490581, 34815, 2]];
var width = function(arrayOfArrays){
  var a = arrays.length;
  for(var i = 0; i < arrays.length; i++)
    window["array"+i] = arrays[i];
  for(var i = 0; i < arrays.length; i++){
    window["rows"+i] = window["array"+i];
    window["rows"+i].reduce(function (onea, twoa){
      return window["rows2"+i] = Math.max(onea, twoa);
    }, []);
    console.log(window["rows2"+i]);
  }
  var aLength = [];
  for (var i = 0; i < arrays.length; i++)
    aLength[i] = window["rows2"+i].length;
  return aLength;
}
console.log(width(arrays));
//111111
//444444444
//83748395
//327894598571490560
//[undefined, undefined, undefined, undefined]

谢谢

您正在将数字放入行2+i而不是数组中。数字没有长度属性。而且,当数组中的元素超过20个时,代码就会中断。我已将数字更改为字符串,但仍然没有定义。谢谢,@LJ_1102。你说的休息是什么意思?我该如何解决这个问题?若我添加toString,它似乎会起作用:它现在确实可以和.toString一起工作!!!谢谢@JavaScriptArray当你将window[rows+20]i设置为20时,它将变成window[rows20],然后在你的reduce调用中,你正在写window[rows2+0]i为0,结果也是window[rows20]。覆盖原始值。您应该阅读一些javascript最佳实践指南,这段代码很可怕,无意冒犯。