我的使用request的NodeJs代码如下:
var objIdArr = [obj1, obj2, obj3];
var index = 0;
var result = {};
var resultArr = [];
(function deleteRecur(){
if (index > objIdArr.length-1) {
//we are done iterating
console.log(resultArr); //faulty resulte
} else
{
request( //nodejs request module
{
uri: base_uri + '/' + objIdArr[index],
method: 'DELETE',
headers: headers
},
function(error, response, body) {
var arg = (transMap.get(objType)).res[0];
if (!error && response.statusCode == 200) {
result['vmid'] = objIdArr[index];
result["result"] = "Success";
} else{
result['vmid'] = objIdArr[index];
result["result"] = "failure";
result["detail"] = error;
}
resultArr[index] = result;
index++;
deleteRecur();
});
}
}());
预期结果Arr [{ vmid: 'obj1', 结果: 'OK'},{ vmid: 'obj2', 结果: 'OK'},{ vmid: 'obj3', 结果: 'OK'}].
但是 console.log 打印 [{ vmid: 'obj3', 结果: 'OK'},{ vmid: 'obj3', 结果: 'OK'},{ vmid: 'obj3', 结果: 'OK'}].
似乎每当我在代码的其他地方更改 result 时,它也会影响数组 resultArr。这怎么可能? javascript 不是应该按值传递吗?
我该如何解决?
最佳答案
在您使用它的函数内创建 var result = {};
并将其推送到 resultArr
。目前,您每次都在覆盖数据(数组多次包含相同的对象,而不是多个对象)。
关于javascript - 对象数组显示重复内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22285933/