forEach 不是函数错误

新手上路,请多包涵

当我尝试使用 foreach 遍历我的 JSON 对象时出现此错误。有人可以帮忙吗?

这是我的 JS:

 function dateTimeChecker() {
     $.ajax({
            "url": 'get-booked.php',
            "method": "get",
            "dataType": "text",
            "cache": false
        }).done(function(jBooked) {
            var jBookedDates=JSON.parse(jBooked);
            console.log(jBookedDates);
               jBookedDates.forEach(function(jB){
                    if (jB=="11/01/2016") {console.log("works");}else{console.log("doesn't");}
        })
      });
}

这是有问题的对象:

在此处输入图像描述

另外,我想知道如果有人愿意解释,我该如何迭代这个对象。 :)

原文由 Robert Ross 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 352
2 个回答

您收到的响应是一个 JSON。您不能在普通对象上使用数组对象的方法 forEach 。您必须在此上下文中使用 Object.keys() 来检索属于已解析 JSON 的可枚举属性,

 Object.keys(jBookedDates).forEach(function(jB){
 if (jB=="11/01/2016") {
    console.log("works");
 } else {
    console.log("doesn't");
 }
});

对于评论中的查询,您可以使用括号表示法来访问这些数组,

 Object.keys(jBookedDates).forEach(function(jB){
  var arr = jBookedDates[jB];
  console.log(arr); //will print the array belongs to each property.
});

原文由 Rajaprabhu Aravindasamy 发布,翻译遵循 CC BY-SA 3.0 许可协议

forEach 只适用于数组,所以如果你想遍历一个对象,你需要这样做:

 for (var attr in obj) {
    // attr is your obj object attribute
    if (obj.hasOwnProperty(attr)) {
        // the magic goes here
    }
}

原文由 MarioAleo 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题