【问题标题】:$.each returns 'undefined is not an object'$.each 返回“未定义不是对象”
【发布时间】:2015-05-25 09:57:03
【问题描述】:

我有以下问题。

我设置了这个 JSON 提要:https://api.myjson.com/bins/1ukdk

我正在尝试遍历源代码以最终输出到 html。

$.getJSON('https://api.myjson.com/bins/1ukdk', function (tabledata) {
        var items = []; 
        console.log(tabledata);
        //To get category name
        var categoryName = tabledata.Categorie;    
        var title, advertisement, day;
        $.each(tabledata.titles, function () {
                title = this;
                //to get title name and value
                var titleName = title.Naam,
                        titleValue = title.Waarde;
                $.each(title.advertisements, function(){
                        advertisement = this;
                        //to get advertisement name
                        var advertisementName = advertisement.Naam;                
                        $.each(advertisement.days, function(){
                                day = this;
                                //to get date
                                var advertisementDay = day.Datum;     
                        });
                });        
        });
        //$(items.join('')).appendTo('table');
});

当我将 (tabledata) 输出到控制台时,我得到了这个对象,其中填充了数组中的对象(我猜这没关系)。

但是,我在 $.each 函数上收到此错误:

TypeError: undefined is not an object (evaluating 'e.length')

我似乎无法解决这个问题。看来我无法直接处理表 data.titles 。有什么帮助/建议吗?

谢谢!

【问题讨论】:

  • 在任何情况下,title.advertisements 或advertisements.days 都可以未定义或为空?

标签: javascript jquery arrays json loops


【解决方案1】:

您的提要正在返回一个对象数组。您可以通过直接访问第一个数组项来遍历标题。

$.each(tabledata[0].titles, function () {

【讨论】:

  • 解决时间最长的总是简单的问题:)
【解决方案2】:

我查看了您的 JSON 响应。您的代码不起作用的原因是因为 tabledata 本身是 Array 但您将其视为其中的第一个对象。

如果您真的只对第一个元素感兴趣,请使用tabledata[0] 访问它。如果您对每个可能的元素都感兴趣,则需要遍历 tabledata 并处理数组中的每个元素。

【讨论】:

    【解决方案3】:

    你的 JSON 解析有问题

    实际的 JSON 是这样的

    [{
            "Categorie" : "Tijdschrift",
            "Aantal scans" : 1200,
            "Aantal bestellingen" : 729,
            "Conversie" : "61%",
            "Waarde" : 3608.55,
            "titles" : [{
                    "Naam" : "Libelle",
                    "Aantal Aantal scans" : 214,
                    "Aantal bestelingen" : 118,
                    "Waarde" : 1089.33,
                    "advertisements" : [{
                            "id" : 0,
                            "Advertentie" : "Wasmachine 3",
                            "Aantal Aantal scans" : 400,
                            "Aantal bestellingen" : 243,
                            "Conversie" : "61%",
                            "Waarde" : 1202.85,
                            "days" : [{
                                    "Datum" : "8 mei",
                                    "Aantal scans" : 20,
                                    "Aantal bestellingen" : 11,
                                    "Waarde" : 99
                                }, {
                                    "Datum" : "9 mei",
                                    "Aantal scans" : 88,
                                    "Aantal bestellingen" : 42,
                                    "Waarde" : 435.6
                                }, {
                                    "Datum" : "10 mei",
                                    "Aantal scans" : 76,
                                    "Aantal bestellingen" : 43,
                                    "Waarde" : 376.2
                                }, {
                                    "Datum" : "11 mei",
                                    "Aantal scans" : 30,
                                    "Aantal bestellingen" : 22,
                                    "Waarde" : 148.5
                                }
                            ]
                        }, {
                            "id" : 1,
                            "Advertentie" : "Anders",
                            "Aantal scans" : 400,
                            "Aantal bestellingen" : 243,
                            "conversion" : "61%",
                            "Waarde" : 1202.85,
                            "days" : [{
                                    "Datum" : "8 mei",
                                    "Aantal scans" : 20,
                                    "Aantal bestellingen" : 11,
                                    "Waarde" : 99
                                }, {
                                    "Datum" : "9 mei",
                                    "Aantal scans" : 88,
                                    "Aantal bestellingen" : 42,
                                    "Waarde" : 435.6
                                }, {
                                    "Datum" : "10 mei",
                                    "Aantal scans" : 76,
                                    "Aantal bestellingen" : 43,
                                    "Waarde" : 376.2
                                }, {
                                    "Datum" : "11 mei",
                                    "Aantal scans" : 30,
                                    "Aantal bestellingen" : 22,
                                    "Waarde" : 148.5
                                }
                            ]
                        }, {
                            "id" : 2,
                            "Advertentie" : "Wasmachine 4",
                            "Aantal scans" : 400,
                            "Aantal bestellingen" : 243,
                            "conversion" : "61%",
                            "Waarde" : 1202.85,
                            "days" : [{
                                    "Datum" : "8 mei",
                                    "Aantal scans" : 20,
                                    "Aantal bestellingen" : 11,
                                    "Waarde" : 99
                                }, {
                                    "Datum" : "9 mei",
                                    "Aantal scans" : 88,
                                    "Aantal bestellingen" : 42,
                                    "Waarde" : 435.6
                                }, {
                                    "Datum" : "10 mei",
                                    "Aantal scans" : 76,
                                    "Aantal bestellingen" : 43,
                                    "Waarde" : 376.2
                                }, {
                                    "Datum" : "11 mei",
                                    "Aantal scans" : 30,
                                    "Aantal bestellingen" : 22,
                                    "Waarde" : 148.5
                                }
                            ]
                        }
                    ]
                }, {
                    "Advertentie" : "Beau Monde",
                    "Aantal scans" : 782,
                    "Aantal bestellingen" : 33,
                    "Waarde" : 9238.33,
                    "advertisements" : [{
                            "id" : 0,
                            "Advertentie" : "Wasmachine 3",
                            "Aantal scans" : 400,
                            "Aantal bestellingen" : 243,
                            "conversion" : "61%",
                            "Waarde" : 1202.85,
                            "days" : [{
                                    "Datum" : "8 mei",
                                    "Aantal scans" : 20,
                                    "Aantal bestellingen" : 11,
                                    "Waarde" : 99
                                }, {
                                    "Datum" : "9 mei",
                                    "Aantal scans" : 88,
                                    "Aantal bestellingen" : 42,
                                    "Waarde" : 435.6
                                }, {
                                    "Datum" : "10 mei",
                                    "Aantal scans" : 76,
                                    "Aantal bestellingen" : 43,
                                    "Waarde" : 376.2
                                }, {
                                    "Datum" : "11 mei",
                                    "Aantal scans" : 30,
                                    "Aantal bestellingen" : 22,
                                    "Waarde" : 148.5
                                }
                            ]
                        }, {
                            "id" : 1,
                            "Advertentie" : "Anders",
                            "Aantal scans" : 400,
                            "Aantal bestellingen" : 243,
                            "conversion" : "61%",
                            "Waarde" : 1202.85,
                            "days" : [{
                                    "Datum" : "8 mei",
                                    "Aantal scans" : 20,
                                    "Aantal bestellingen" : 11,
                                    "Waarde" : 99
                                }, {
                                    "Datum" : "9 mei",
                                    "Aantal scans" : 88,
                                    "Aantal bestellingen" : 42,
                                    "Waarde" : 435.6
                                }, {
                                    "Datum" : "10 mei",
                                    "Aantal scans" : 76,
                                    "Aantal bestellingen" : 43,
                                    "Waarde" : 376.2
                                }, {
                                    "Datum" : "11 mei",
                                    "Aantal scans" : 30,
                                    "Aantal bestellingen" : 22,
                                    "Waarde" : 148.5
                                }
                            ]
                        }, {
                            "id" : 2,
                            "Advertentie" : "Wasmachine 4",
                            "Aantal scans" : 400,
                            "Aantal bestellingen" : 243,
                            "conversion" : "61%",
                            "Waarde" : 1202.85,
                            "days" : [{
                                    "Datum" : "8 mei",
                                    "Aantal scans" : 20,
                                    "Aantal bestellingen" : 11,
                                    "Waarde" : 99
                                }, {
                                    "Datum" : "9 mei",
                                    "Aantal scans" : 88,
                                    "Aantal bestellingen" : 42,
                                    "Waarde" : 435.6
                                }, {
                                    "Datum" : "10 mei",
                                    "Aantal scans" : 76,
                                    "Aantal bestellingen" : 43,
                                    "Waarde" : 376.2
                                }, {
                                    "Datum" : "11 mei",
                                    "Aantal scans" : 30,
                                    "Aantal bestellingen" : 22,
                                    "Waarde" : 148.5
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
    

    解析后得到的是这个

    [{
            "id" : 0,
            "Advertentie" : "Wasmachine 3",
            "Aantal scans" : 400,
            "Aantal bestellingen" : 243,
            "conversion" : "61%",
            "Waarde" : 1202.85,
            "days" : [{
                    "Datum" : "8 mei",
                    "Aantal scans" : 20,
                    "Aantal bestellingen" : 11,
                    "Waarde" : 99
                }, {
                    "Datum" : "9 mei",
                    "Aantal scans" : 88,
                    "Aantal bestellingen" : 42,
                    "Waarde" : 435.6
                }, {
                    "Datum" : "10 mei",
                    "Aantal scans" : 76,
                    "Aantal bestellingen" : 43,
                    "Waarde" : 376.2
                }, {
                    "Datum" : "11 mei",
                    "Aantal scans" : 30,
                    "Aantal bestellingen" : 22,
                    "Waarde" : 148.5
                }
            ]
        }, {
            "id" : 1,
            "Advertentie" : "Anders",
            "Aantal scans" : 400,
            "Aantal bestellingen" : 243,
            "conversion" : "61%",
            "Waarde" : 1202.85,
            "days" : [{
                    "Datum" : "8 mei",
                    "Aantal scans" : 20,
                    "Aantal bestellingen" : 11,
                    "Waarde" : 99
                }, {
                    "Datum" : "9 mei",
                    "Aantal scans" : 88,
                    "Aantal bestellingen" : 42,
                    "Waarde" : 435.6
                }, {
                    "Datum" : "10 mei",
                    "Aantal scans" : 76,
                    "Aantal bestellingen" : 43,
                    "Waarde" : 376.2
                }, {
                    "Datum" : "11 mei",
                    "Aantal scans" : 30,
                    "Aantal bestellingen" : 22,
                    "Waarde" : 148.5
                }
            ]
        }, {
            "id" : 2,
            "Advertentie" : "Wasmachine 4",
            "Aantal scans" : 400,
            "Aantal bestellingen" : 243,
            "conversion" : "61%",
            "Waarde" : 1202.85,
            "days" : [{
                    "Datum" : "8 mei",
                    "Aantal scans" : 20,
                    "Aantal bestellingen" : 11,
                    "Waarde" : 99
                }, {
                    "Datum" : "9 mei",
                    "Aantal scans" : 88,
                    "Aantal bestellingen" : 42,
                    "Waarde" : 435.6
                }, {
                    "Datum" : "10 mei",
                    "Aantal scans" : 76,
                    "Aantal bestellingen" : 43,
                    "Waarde" : 376.2
                }, {
                    "Datum" : "11 mei",
                    "Aantal scans" : 30,
                    "Aantal bestellingen" : 22,
                    "Waarde" : 148.5
                }
            ]
        }
    ]
    }
    ]
    }
    ]
    

    你可以清楚地看到区别

    【讨论】:

      猜你喜欢
      • 2019-11-03
      • 1970-01-01
      • 2021-09-11
      • 1970-01-01
      • 1970-01-01
      • 2016-01-30
      • 2017-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多