Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组以前的值在angularjs中被覆盖_Javascript_Angularjs - Fatal编程技术网

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

Javascript 数组以前的值在angularjs中被覆盖,javascript,angularjs,Javascript,Angularjs,我试着做下面的事情,其中foo是一个填充“out”数组的函数。 但对于数据中心对象中的每个数据中心,推出的数组都会被一个新值覆盖 我想防止这种覆盖。 如何在循环中创建新的数组引用/实例 _.map(datacenters, function(datacenter){ var out = [] foo(datacenter, out); $scope.dcSelected.push(out); }); 您有两种选择: 1)

我试着做下面的事情,其中foo是一个填充“out”数组的函数。 但对于数据中心对象中的每个数据中心,推出的数组都会被一个新值覆盖

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

 _.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函数中的局部变量)中来推送数据,这样它肯定对您有用。