2015-10-16 81 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") 
 
    } 
 
});