Javascript 数组以前的值在angularjs中被覆盖
我试着做下面的事情,其中foo是一个填充“out”数组的函数。 但对于数据中心对象中的每个数据中心,推出的数组都会被一个新值覆盖 我想防止这种覆盖。 如何在循环中创建新的数组引用/实例Javascript 数组以前的值在angularjs中被覆盖,javascript,angularjs,Javascript,Angularjs,我试着做下面的事情,其中foo是一个填充“out”数组的函数。 但对于数据中心对象中的每个数据中心,推出的数组都会被一个新值覆盖 我想防止这种覆盖。 如何在循环中创建新的数组引用/实例 _.map(datacenters, function(datacenter){ var out = [] foo(datacenter, out); $scope.dcSelected.push(out); }); 您有两种选择: 1)
_.map(datacenters, function(datacenter){
var out = []
foo(datacenter, out);
$scope.dcSelected.push(out);
});
您有两种选择:
1) 创建一个闭包
2) 创建另一个数组作为控制器的一部分,该数组将存储数据中心的链接并输出一个数组,将其想象为一个键、值,但位于同一控制器的全局变量中。您有两个选项:
1) 创建一个闭包
2) 创建另一个数组作为控制器的一部分,该数组将存储数据中心的链接并输出一个数组,将其想象为一个键、值,但位于同一控制器的全局变量中。您可以尝试angularJs的angular.copy(out)。希望对你有用
_.map(datacenters, function(datacenter){
var out = []
foo(datacenter, out);
$scope.dcSelected.push(angular.copy(out));
});
你可以试试angularJs。复制(出)angularJs。希望对你有用
_.map(datacenters, function(datacenter){
var out = []
foo(datacenter, out);
$scope.dcSelected.push(angular.copy(out));
});
把你的
声明放在外面:
var out = [];
_.map(datacenters, function(datacenter){
foo(datacenter, out);
$scope.dcSelected.push(out);
});
把你的声明放在外面:
var out = [];
_.map(datacenters, function(datacenter){
foo(datacenter, out);
$scope.dcSelected.push(out);
});
我不完全理解你想做什么,所以我将做一个一般的例子:
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导入下划线)我不完全理解您试图做什么,因此我将做一个一般示例:
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]
(我这样使用map,因为我没有为js导入下划线)什么是foo()
具体做的?请显示code.foo将对象添加到“out”中,如out.push(obj1)、out.push(obj2)、out.push(obj3)等。foo()具体做什么?请显示代码。foo将对象添加到“out”中,如out.push(obj1)、out.push(obj2)、out.push(obj3)等。我认为这是主要原因,还有一个@SanketAchari你能在控制台上记录结果吗?我想这是主要原因,还有一个@SanketAchari能否在控制台上记录结果?已尝试。但它仍然覆盖以前的值。因为数组引用通过foo函数返回,所以值会一次又一次地被覆盖。您应该将代码移动到foo函数中的作用域变量$scope.dcSelected.push(foo函数中的局部变量)中以推送数据,这样它肯定会对您有用。但它仍然覆盖以前的值。因为数组引用通过foo函数返回,所以值会一次又一次地被覆盖。您应该将代码移动到foo函数中的作用域变量$scope.dcSelected.push(foo函数中的局部变量)中来推送数据,这样它肯定对您有用。