将整数推送到数组会保持顺序,但推送对象则不会

时间:2016-05-03 19:51:00

标签: javascript arrays json sorting

我有一个我无法弄清楚的问题。

这是我的JSON

{
  "id": 1,
  "resources": [
     {
       "id": 1,
       "qty": 5,
       "text": "text1"
     },
     {
       "id": 2,
       "qty": 5,
       "text": "text2"
     },
     {
       "id": 3,
       "qty": 5,
       "text": "text3"
     },
     {
       "id": 4,
       "qty": 3,
       "text": "text4"
     }]
}

我使用简单的for循环遍历json.resources,如下面的那个

var new_array = [];
for (var i = 0; i < json.resources.length; i++) {
        var qty = json.resources[i].qty;
        for (var j = 0; j < qty; j++) {

            var new_resource = {
                id: json.resources[i].id,
                text: json.resources[i].text
            };

            new_array.push(new_resource);
        };
    };

这个循环想要获取存储在JSON中的“资源”的属性“qty”,并为每个“qty”保存一个新数组(名为new_array)的条目,即如果qty为5,我想推送到new_array相同的资源5次。

当我尝试输出new_array时,项目的顺序与我的预期不符,每次刷新页面时都会更改。我期望在数组的前5个位置中找到id = 1和text = text1的所有元素。它从未发生过。

如果我使用相同的方法将“id”属性仅推送到数组而不是整个对象,结果就是我所期望的:

[1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4]

是否有共鸣为什么我会得到这样的不同行为?有什么我想念的东西,我应该进一步考虑吗?

提前谢谢。

0 个答案:

没有答案