2015-10-16 88 views
0

我正在從API中獲取一些信息。我看起來像這樣的陣列無法讀取屬性'地圖'undefined

var hours = 
[ 
[ 
    "2015-10-21T13:00:00Z", 
    "2015-10-21T21:00:00Z" 
], 
[ 
    "2015-10-22T13:00:00Z", 
    "2015-10-22T21:00:00Z" 
] 
] 

我試着在數組中循環並調用某些東西,如果調用了特定的時間。

var res = hours.map(function(v) { 
    if (v == '2015-10-22T13:00:00Z'){ 
     console.log("this is my test") 
    } 
}); 

但是,當我嘗試我得到這個錯誤在'地圖'的屬性是未定義的。

現在奇怪的是我試着用一個超級小數組代替一個我從api中取出的數組。

array = [ [ '1', '2' ], [ '1', '3' ], [ '3', '4' ] ] 

,當我試圖代替「小時」

var res = array.map(function(v) { 

我沒有得到錯誤使用「數組」。你是否無法操縱並使用來自API的數組?爲什麼我的簡單小小'陣列'工作,但不是'小時'?

我最終需要在我的'小時'數組中標記特定的日期。

+0

哪裏'小時來自?你確定*它是一個數組(而不是對象)? 'console.log(小時);'顯示什麼? –

+2

這個數組是否來自ajax調用或某些東西,並返回作爲JSON字符串,可能需要解析? – AtheistP3ace

+0

@ AtheistP3ace我不認爲它需要被解析。我說,因爲我列出的是它在控制檯內預覽的外觀。 – kdweber89

回答

0

我建議你檢查一下AJAX請求的響應類型。如果是JSON字符串(最常見),則應在實際遍歷數組之前解析該響應。

var hours = JSON.parse(YOUR_RESPONSE); 

而且,由於其多dimenstional陣列,您需要檢查v[0],而不是v

做這樣的:

var hours = [ 
 
    [ 
 
    "2015-10-21T13:00:00Z", 
 
    "2015-10-21T21:00:00Z" 
 
    ], 
 
    [ 
 
    "2015-10-22T13:00:00Z", 
 
    "2015-10-22T21:00:00Z" 
 
    ] 
 
]; 
 

 
var res = hours.map(function(v) { 
 
    if (v[0] == '2015-10-22T13:00:00Z') { //v[0] not just v 
 
    console.log("this is my test") 
 
    } 
 
});