jquery - data.map 不是函数

标签 jquery json

我正在为一个我无法解决的错误而苦恼。我有以下内容;

JSON

{"products":
[
    {
        "product_id" : "123",
        "product_data" : {
            "image_id" : "1234",
            "text" : "foo",
            "link" : "bar",
            "image_url" : "baz"
        }
    },{
        "product_id" : "456",
        "product_data" : {
            "image_id" : "1234",
            "text" : "foo",
            "link" : "bar",
            "image_url" : "baz"
        }
    }
]}

和下面的jQuery

function getData(data) {
    this.productID = data.product_id;
    this.productData = data.product_data;
    this.imageID = data.product_data.image_id;
    this.text = data.product_data.text;
    this.link = data.product_data.link;
    this.imageUrl = data.product_data.image_url;
}

$.getJSON("json/products.json").done(function (data) {

    var allProducts = data.map(function (item) {
        return new getData(item);
    });
});

但我收到一个错误,即 map.data 未定义为函数?看着它,我不知道什么不起作用,因为我已经将它从以前使用的代码复制到了一个新项目中。唯一不同的是 JSON 源。前一个在 [] 括号之前没有 {"products": 部分。这就是让我失望的原因吗?

最佳答案

对象,JavaScript 中的 {} 没有方法 .map()。仅供Arrays , [].

因此,为了让您的代码能够正常工作,请将 data.map() 更改为 data.products.map(),因为 products 是可以迭代的数组。

关于jquery - data.map 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30803168/

相关文章:

android - 如何使用多部分实体将图像上传到服务器?

javascript - 将列表向上/向下滚动到一个 div

javascript - 如何在javascript中告诉包含对象?

JSON 到 YAML : convert fields with embedded newlines "\n" to literal block "|"

javascript - Knockout 如何使用元素获取数据绑定(bind)键和可观察值?

javascript - 将数据从 JSON 对象加载到数组中

java - 如何从包含未经修改的数组的 String JSON 中获取 java 中 JSON 对象的 String[] 数组

jquery - 访问和/或操作元素的 angular 2/typescript 方式是什么?

jquery - 告诉 jQuery 只执行某些代码一次

jquery - 使用ajax登录表单