我对使用键和值对的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)
在您的情况下,您遍历一个对象数组,因此该值将是每个索引处的对象,并且键将是索引值(即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
}
});