1. ホーム
  2. jquery

[解決済み] data.mapは関数ではありません

2022-03-01 04:35:39

質問

エラーに頭を抱えているのですが、どうしたらいいのかわかりません。 以下のような状態です。

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() . これは 配列 , [] .

ですから、あなたのコードが動作するようにするには、次のように変更します。 data.map()data.products.map() から products は配列で、これを繰り返し使用することができます。