循环遍历对象数组 - 数组在第一次迭代后完全加载

时间:2015-03-26 22:05:57

标签: javascript jquery arrays json

each循环的第一次迭代之后,myArr完全加载了所有4个对象。 (在第一次循环后,在控制台中查看console.log(myArr) - 的打印件。)

我很难理解这是怎么回事,因为如果你看看console.log(item)的打印件,它只包含1个对象,而不是全部4个。

那么myArr如何在第一次迭代后完全加载,那时应该只在第四次迭代后发生?

以下是使用相同代码的JSFiddle的链接:http://jsfiddle.net/bengrunfeld/fdtom886/

var obj = [
    {
        "id": 1111,
        "todoText": {"index":2,"items":[{"firstName":"Benny"},{"lastName":"Hill"}]}
    },
    {
        "id": 2222,
        "todoText": {"index":2,"items":[{"firstName":"Bob"},{"lastName":"Marley"}]}
    },
    {
        "id": 3333,
        "todoText": {"index":2,"items":[{"firstName":"John"},{"lastName":"Lennon"}]}
    },
    {
        "id": 4444,
        "todoText": {"index":2,"items":[{"firstName":"Led"},{"lastName":"Zeplin"}]}
    },
];

var myArr = [];

$.each(obj, function(key, item) {
    console.log(myArr);
    console.log(item);
    myArr.push(item);
});

1 个答案:

答案 0 :(得分:2)

您正在将数组(通过引用)记录到控制台。一旦展开它,就完成了每个循环,这意味着数组本身有4个项目。

要在此处查看差异,您可以记录myArr.length,并且您将看到长度是您在每个循环的每次迭代中所期望的。

RE:你的“红利问题”第一张照片对我来说不是空白。