我有一个我无法弄清楚的问题。
这是我的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]
是否有共鸣为什么我会得到这样的不同行为?有什么我想念的东西,我应该进一步考虑吗?
提前谢谢。