javascript - 对象数组显示重复内容

标签 javascript node.js

我的使用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/

相关文章:

javascript - 在我的地理编码器地理编码回调中,如何确定结果对应于哪个请求?

javascript - 为什么按钮不显示(标题上的减号按钮)?

ios - Udp套接字绑定(bind)失败

javascript - Node.js MongoDB collection.find().toArray 什么都不返回

javascript - Passport-Facebook 和 JavaScript Facebook SDK

c# - 使用 Jquery 从文本框向列表框添加项目

JavaScript:对象内的短数组

Javascript替换方法,替换为 "$1"

javascript - 如何在 node.js 中同步函数和 promises

node.js - MongoDb 数据关系