data.mapは関数ではありません 質問する

data.mapは関数ではありません 質問する

解決方法がわからないエラーに頭を悩ませています。次のようなエラーがあります。

翻訳

{"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":[] 括弧の前の部分がありませんでした。これが私を混乱させているのでしょうか?

ベストアンサー1

JavaScriptのオブジェクト{}にはメソッドがありません.map()配列[]

したがって、コードを機能させるには、data.map()を に変更します。これは、反復処理できる配列だdata.products.map()からです。products

おすすめ記事