2011-11-09 70 views
0

我試圖做一個二維數組了兩個一維數組,此代碼:的JavaScript多維數組未定義的對象錯誤

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

但是,我得到錯誤信息:「未定義爲空或不是對象「,它指向for語句後的第一行。 PassPourcentNames和PassPourcentValue具有相同數量的元素,並且這些值都不爲空。第一個包含字符串和第二個整數。

任何幫助都非常令人滿意。

回答

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引擎速度更快。

1

在分配給[0][1]之前,首先定義PassAssoArr[k] = [];

1

Javascript不支持真正的多維數組。

您正在嘗試使用嵌套的數組,而無需創建內部數組。

你需要把陣列到外PassAssoArr的每個元素:

PassAssoArr[index] = []; //Empty array literal 
0

你只是限定PassAssoArr的一個維度 - 需要設置PassAssoArr [K] =新的Array();

0

嘗試只是在做:

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