我想用下面的代码把两个一维数组变成一个二维数组:
var PassAssoArr = new Array();
for(k in PassPourcentNames) {
PassAssoArr[k][0] = PassPourcentNames[k]
PassAssoArr[k][1] = PassPourcentValue[k]
}
然而,我得到错误消息:"'undefined'是null或不是一个对象",它指向for语句后的第一行。PassPourcentNames和PassPourcentValue具有相同数量的元素,并且没有一个值为空。第一个包含字符串,第二个包含整数。
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引擎中实际上更快。
先定义PassAssoArr[k] = [];
,再分配给[0]
和[1]
Javascript不支持真正的多维数组。
您试图使用嵌套数组而不创建内部数组。
您需要在外部PassAssoArr
的每个元素中放入一个数组:
PassAssoArr[index] = []; //Empty array literal
您只定义了PassAssoArr的一个维度-您需要设置PassAssoArr[k] = new Array();
试着做:
PassAssoArr[k] = new Array(PassPourcentNames[k], PassPourcentValue[k]);