2012-12-29 43 views
1

我有一個簡單的檢查,如果鍵的特定的一組是一個數組,如果沒有建立,但由於某些原因,如果語句返回一個錯誤,這就是我想要做的事:實例的數組返回錯誤

//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

此錯誤是發生在第二IF語句。我在這裏犯的錯誤是什麼?

+1

你可以發佈一個試玩的jsfiddle? –

+0

你還沒有聲明'我' –

+0

哎呀,我忘了貼我到問題:P – Sir

回答

5

在第一if聲明:

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

被解析爲:

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

在這一點上,map[6]是不確定的,所以!map[6]true,而true不是Array實例。所以它不會將其設置爲new Array()

將其更改爲:

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

好吧,發現... –

+0

啊我看到了:)謝謝! – Sir