无法遍历JavaScript中的对象数组(即使控制台可以将其读取为对象数组也是如此)

时间:2019-06-26 16:51:52

标签: javascript arrays json object

我有一个严重困扰我的问题!我有这个函数readFromJSON,它从url参数读取一个JSON,然后将其作为数组返回,这样我就可以遍历它并使用带有js的数据创建html元素; 这是该JSON的示例:

[
{
    "productType": "Laptop",
    "brands": [
        {
            "brand": "somebrand1",
            "products": [
                {
                    "id": "1",
                    "title": "smth"
                },
    ]
},
    {"productType": "Tablet",
    "brands": [
        {
            "brand": "somebrand2",
            "products": [
                {
                    "id": "3",
                    "title": "smth3"
                },
    ]
}
]

当然,该JSON中的每个数组都有多个项!

我使用JQuery AJAX通过此功能阅读它:

function readFromJSON(JSON_Addr) {
var array_of_items = [];
$.getJSON(JSON_Addr,
    function (response) {
        $(response).each(function (i) {
            var brands = response[i].brands;
            $(brands).each(function (j) {
                var products = brands[j].products;
                $(products).each(function (k) {
                    var product = products[k];
                    array_of_items.push(product);
                });
            });
        });
    }
);
return array_of_items;
}

然后,如果我使用JSON的URL调用此函数并将其记录到控制台,则可以将其正确地视为chrome中的对象数组,但是如果尝试获取returned_array[0],则无法定义。我使用了Object.prototype.toString()并以chrome的形式获得了它,这正是我想要的:

  

[]   0:{....}   1:{....}   [数组对象]

那我在做什么错呢?顺便说一句,我尝试使用$().eacharray.foreach()for (item in items),但它们都不起作用 我在$ load中记录了返回值:

$({
    var res = readFromJSON("sample.json");
    console.log(res); // works 
    console.log(Object.prototype.toString(res)); //works and returns : [array object]
    console.log(res[0]);
})

0 个答案:

没有答案