Foreach键和值输入参数javascript

foreach key and value input parameters javascript

本文关键字:javascript 参数 输入 键和值 Foreach      更新时间:2023-09-26

我有点混淆foreach循环语法与键和值对。所以我有一个对象和一个foreach循环,就像下面的例子一样。在我的例子中,我的对象,值和键是什么?如果我想把加拿大改名为中国,我需要做些什么?

数组

 $scope.tempData = [];

变量:

var data = [{name: "Kevin", country: "Canada"}, {name:"Bob", country: "Spain"}];

     $scope.editedDetails = function () {
           angular.forEach(object,
     function(value, key) { 
     });
    };

在您的例子中,您要迭代一个对象数组,因此值将是每个索引处的对象,键将是索引值(即0,1,…)。您希望将data传递给您引用的object

var data = [{name: "Kevin", country: "Canada"}, {name:"Bob", country: "Spain"}];
angular.forEach(data, function (value, key) {
  // Key will be 0 or 1
  if (value.country === 'Canada') {
    value.country = 'China';
  }
});

因为对象在JavaScript中是通过引用传递的,所以你可以直接编辑每个对象的属性,也就是说,value.country === 'China'会改变实际数组中的对象。

然而,你只能改变对象的属性,如果你试图覆盖整个对象,它将不起作用。

var data = [{name: "Kevin", country: "Canada"}, {name:"Bob", country: "Spain"}];
angular.forEach(data, function (value, key) {
  if (value.country === 'Canada') {
    // This won't update the object in data.
    value = {
      name: value.name,
      country: 'China'
    };
  }
});

如果你在迭代一个非对象类型的对象,你必须使用键并直接编辑对象,在传递一个对象的情况下,键将是对象中的实际键。

var nyc = { name: 'New York City', state: 'NY' };
angular.forEach(nyc, function (value, key) {
  if (key === 'state') {
    nyc[key] = 'New York'; // Or, nyc.state since we know what it is
  }
});