我正在为一个我无法解决的错误而猛烈抨击。我有以下内容;
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":[] 括号之前的部分。这是让我失望的原因吗?
{"products":
对象,{}在 JavaScript 中没有方法.map()。它仅适用于Arrays , [].
{}
.map()
[]
因此,为了让您的代码工作更改data.map()为data.products.map()sinceproducts是一个您可以迭代的数组。
data.map()
data.products.map()
products