对象数组显示重复的内容

时间:2014-03-09 18:04:26

标签: javascript node.js

使用请求的我的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();
        });
    }

}());

预期resultArr [{vmid:'obj1',结果:'确定'},{vmid:'obj2',结果:'确定'},{vmid:'obj3',结果:'确定'}]。

但是console.log会打印出来 [{vmid:'obj3',结果:'确定'},{vmid:'obj3',结果:'确定'},{vmid:'obj3',结果:'确定'}]。

似乎每当我在代码中的其他地方更改结果时,它也会影响数组resultArr。这怎么可能?是不是javascript应该通过值传递?

如何解决此问题?

1 个答案:

答案 0 :(得分:2)

在您使用它的函数内创建var result = {};并将其推送到resultArr。目前,您每次都要覆盖数据(数组包含多次相同的对象而不是多个对象)。