我正在尝试将对象推送到数组中。
我有类似
的东西 var productCatogory = obj.data; //obj is http request data
var productStatus = obj.status;
var productObj = [productCatogory, productStatus];
for (var id in currentProducts) {
if(productObj[0] == id) {
productObj[0].push({'id': id, 'name': currentProducts[id]});
} else {
productObj[1].push({'id': id, 'name': currentProducts[id]});
}
}
我想要的结果:
productObj = [ productObj[0][{'id': id, 'name': currentProducts[id]},
{'id': id, 'name': currentProducts[id]},
{'id': id, 'name': currentProducts[id]}
],
prodcutObj[1][{'id': id, 'name': currentProducts[id]}.
{'id': id, 'name': currentProducts[id]},
{'id': id, 'name': currentProducts[id]},
]
]
以上代码将具有undefined不是函数错误,因为productObj[0]
不是数组。我该如何解决这个问题?非常感谢!
答案 0 :(得分:1)
productObj
已经是一个对象数组。如果您想在其上添加/更新属性,只需直接访问该属性:
for (var id in currentProducts) {
if(productObj[0].id == id) {
productObj[0].id = id;
productObj[0].name = currentProducts[id];
} else {
productObj[1].id = id;
productObj[1].name = currentProducts[id];
}
}
现在,如果你想替换当前对象,那么你可以设置整个对象:
productObj[0] = {'id': id, 'name': currentProducts[id]};
<强>更新强>
为了获得您想要的结果,您可以尝试在对象中创建一个属性来保存新数组:
productObj[0].objects = [];
productObj[1].objects = [];
for (var id in currentProducts) {
if(productObj[0] == id) {
productObj[0].objects.push({'id': id, 'name': currentProducts[id]});
} else {
productObj[1].objects.push({'id': id, 'name': currentProducts[id]});
}
}
更新2: