数组以前的值在angularjs中被覆盖

时间:2017-06-22 04:02:31

标签: javascript angularjs

我正在尝试执行以下操作,其中foo是一个填充' out'阵列。 但对于数据中心对象中的每个数据中心,推出的数组都会被新值覆盖。

我想阻止这种覆盖。 如何在循环中创建新的数组引用/实例?

 _.map(datacenters, function(datacenter){      
        var out = []
        foo(datacenter, out);
        $scope.dcSelected.push(out);
    }); 

4 个答案:

答案 0 :(得分:1)

将您的out声明放在外面:

var out = [];
_.map(datacenters, function(datacenter){      
    foo(datacenter, out);
    $scope.dcSelected.push(out);
});

答案 1 :(得分:0)

您可以尝试angularJs的angular.copy(out)。希望它能为你效劳

_.map(datacenters, function(datacenter){      
        var out = []
        foo(datacenter, out);
        $scope.dcSelected.push(angular.copy(out));
    });

答案 2 :(得分:0)

我不完全明白你想做什么,所以我会做一个一般的例子:

var datacenters = [1,2,3,4]

var out = []
datacenters.map(function(datacenter){      

      datacenter2 = datacenter + 1;
      out.push(datacenter2);
  }); 

console.log(out);
  

[2,3,4,5]

(我使用地图,因为我没有为js导入下划线)

答案 3 :(得分:-1)

您有两个选择:

1)创建一个闭包

2)创建另一个数组作为控制器的一部分,它将存储数据中心和数组的链接,将其想象为键,值,但是在同一个控制器的全局变量中。