向数组对象添加属性 - AngularJS

时间:2016-06-07 12:43:57

标签: javascript arrays angularjs

如何通过循环遍历数组来向数组中的对象添加属性?

示例我有一个包含对象的数组; $scope.addresses包含许多地址。

并且假设每个对象只有4个属性;

$scope.addresses[0].address_line1
$scope.addresses[0].address_line2
$scope.addresses[0].address_line3
$scope.addresses[0].city

现在我想为数组中的每个对象添加更多属性。

$scope.addresses[0].location
$scope.addresses[0].neighbourhood

任何帮助表示感谢。

4 个答案:

答案 0 :(得分:3)

只需指定一个新属性

$scope.addresses[0].location = 'Roxbury'

$scope.addresses[0].location必须已经是对象,因为您要在其上设置属性。

要遍历地址,请使用forEach或标准循环:

$scope.addresses.forEach(function(address, index) {
    address.location = locations[index];
});

for(var i=0; i < $scope.addresses.length; i++) {
  $scope.addresses[i].location = myLocations[i];
}

或者您可以使用地图

替换整个地址对象
scope.addresses = addresses.map(address => Object.assign(
    {location: 'X'}, address));

答案 1 :(得分:1)

使用.map循环收集:

$scope.addresses = $scope.addresses.map(function(address) {
      address.location = "X";   
      return address;
});

答案 2 :(得分:0)

简单地使用。 dot概念应该做。

$scope.addresses[0].location = 'Iceland';

在执行赋值之前,只需检查是否存在$ scope.addresses [0],否则您将尝试访问“未定义”错误的属性。

类似

if($scope.addresses[0])
    $scope.addresses[0].location = 'Iceland';

答案 3 :(得分:0)

您可以使用forEach循环,然后在其中添加所需的项目:

angular.forEach($scope.addresses, function(v, k) {
    v.location = "New location " + (k + 1);
    v.neighbourhood = "New neighbourhood " + (k + 1);
  });

观看演示here