2011-11-09 8 views
0

私はこのコードを持つ2つの1次元配列のうちの2次元配列を作成しようとしています:Javascriptを多次元配列未定義のオブジェクトエラー

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

しかし、私はエラーメッセージを取得:「 『未定義』をnullですか、オブジェクトではありません "とし、forステートメントの後の最初の行を指します。 PassPourcentNamesとPassPourcentValueの要素数は同じで、値はnullではありません。最初の文字列には文字列、2番目の文字列には整数が入ります。

どのようなヘルプも非常に評価されています。

答えて

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()私は、これはほとんどのJSエンジンで実際に高速であると信じてい[]

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

を使用することができます。

1

[0][1]に割り当てる前に、最初にPassAssoArr[k] = [];と定義します。

1

Javascriptでは、真の多次元配列はサポートされていません。

内部配列を作成せずにネストされた配列を使用しようとしています。

あなたは外PassAssoArrの各要素に配列を配置する必要があります。

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

あなただけPassAssoArrの一つの寸法を定義している - あなたはPassAssoArr [k]が新しいアレイ(=設定する必要があります)。

0

だけやってみます

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