1

特定のキーのセットが配列であるかどうかを確認する簡単なチェックがあります。作成しない場合は、何らかの理由でifステートメントがエラーを返します。これは、私が行おうとしていることです。

//test data
var i = 0;
var map = new Array(); 
var Data[i]['x'] = 6;
var Data[i]['y'] = 7;

if(!map[Data[i]['x']] instanceof Array){
   map[Data[i]['x']] = new Array();
}

if(!map[Data[i]['x']][Data[i]['y']] instanceof Array){ //error on this line
   map[Data[i]['x']][Data[i]['y']] = new Array();
}

エラーは次のとおりです。

Uncaught TypeError: Cannot read property '6' of undefined

このエラーは、2番目のIFステートメントで発生しています。私がここで犯している間違いは何ですか?

4

1 に答える 1

5

最初のifステートメントで:

if(!map[Data[i]['x']] instanceof Array)

次のように解析されています:

if((!map[Data[i]['x']]) instanceof Array)

その時点で、map[6]は未定義であり!map[6]、は未定義でありtruetrueのインスタンスではありませんArray。したがって、に設定されませんnew Array()

次のように変更します。

if (!(map[Data[i]['x']] instanceof Array))
于 2012-12-29T02:49:55.467 に答える