如何通过循环遍历数组来向数组中的对象添加属性?
示例我有一个包含对象的数组;
$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
任何帮助表示感谢。
答案 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。