无法读取属性'map'undefined

时间:2015-10-16 15:25:56

标签: javascript arrays

我正在处理从API中提取的一些信息。我拥有的数组看起来像这样

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")
  }
});

然而,当我尝试在'map'属性中得到此错误时,未定义。

现在奇怪的是我尝试用超级小阵列代替我从api中取出的那个。

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

当我尝试使用'array'而不是'hours'

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

我没有收到错误。您是否无法操纵和使用来自API的数组?为什么我的简单的小'数组'工作,但不是'小时'?

我最终需要在'hours'数组中标记特定日期。

1 个答案:

答案 0 :(得分:0)

我建议您检查AJAX请求的响应类型。如果它是一个JSON字符串(最常见),你应该在实际迭代数组之前解析响应。

var hours = JSON.parse(YOUR_RESPONSE);

此外,由于它是一个多维数组,您需要检查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")
  }
});