Javascript多维数组未定义对象错误

时间:2011-11-09 18:59:49

标签: javascript multidimensional-array undefined

我试图用这个代码用两个一维数组制作一个二维数组:

  var PassAssoArr = new Array();
  for(k in PassPourcentNames) {
    PassAssoArr[k][0] = PassPourcentNames[k]
    PassAssoArr[k][1] = PassPourcentValue[k]
  }

但是,我收到错误消息:“'undefined'为null或不是对象”,它指向for语句后面的第一行。 PassPourcentNames和PassPourcentValue具有相同数量的元素,并且没有值为null。第一个包含字符串,第二个包含整数。

任何帮助都是非常有用的。

5 个答案:

答案 0 :(得分:1)

首先定义PassAssoArr[k] = [];,然后再分配给[0][1]

答案 1 :(得分:1)

Javascript不支持真正的多维数组。

您尝试使用嵌套数组而不创建内部数组。

您需要将数组放入外部PassAssoArr

的每个元素中
PassAssoArr[index] = [];   //Empty array literal

答案 2 :(得分:0)

您只定义PassAssoArr的一个维度 - 您需要设置PassAssoArr [k] = new Array();

答案 3 :(得分:0)

  var PassAssoArr = new Array();
  for(k in PassPourcentNames) {
    PassAssoArr[k] = new Array();
    PassAssoArr[k][0] = PassPourcentNames[k]
    PassAssoArr[k][1] = PassPourcentValue[k]
  }

您也可以使用new Array()

代替[]
  var PassAssoArr = [];
  for(k in PassPourcentNames) {
    PassAssoArr[k] = [];
    PassAssoArr[k][0] = PassPourcentNames[k]
    PassAssoArr[k][1] = PassPourcentValue[k]
  }

我相信在大多数JS引擎中这实际上更快。

答案 4 :(得分:0)

尝试做:

PassAssoArr[k] = new Array(PassPourcentNames[k], PassPourcentValue[k]);