我正在尝试将Id推送到Json对象数组中。每个对象都必须有'" JobId" :价值'在发送到apiController之前插入。我试图使用forEach循环,但我被卡住了。现在不是在数组中的每个对象中插入它而是插入数组的末尾。我有一个plunkr设置。 plunkr
$scope.array = [{
ESOURCELINEID:"5464",
QBRFQLINESUPPLIERPARTNUMBER:"HW12",
QBRFQLINESUPPLIERQUOTEUOM:"ft"
}, {
ESOURCELINEID:"8569",
QBRFQLINESUPPLIERPARTNUMBER:"LT34",
QBRFQLINESUPPLIERQUOTEUOM:"Meter"
}];
var JobId = 143;
$scope.array.forEach(function (newJobItem) {
$scope.array.push({'JobId' : JobId});
});
var index = 0;
$scope.array.forEach(function (newJobItem) {
console.log('newJobItem #' + (index++) + ': ' + JSON.stringify(newJobItem));
});
答案 0 :(得分:17)
您正在做的是通过$scope.array.forEach
遍历每个项目,但是您实际上并未实际修改从回调newJobItem
返回的项目,而只是推送新项目:$scope.array.push({'JobId' : JobId});
。
forEach中的正确行应为newJobItem.JobId = JobId;
。这样您就可以修改$scope.array
中的现有条目,而不仅仅是推送新对象。
更明确地说:
$scope.array.forEach(function (newJobItem) {
$scope.array.push({'JobId' : JobId});
});
变为:
$scope.array.forEach(function (newJobItem) {
newJobItem.JobId = JobId;
});
答案 1 :(得分:4)
您想要操纵数组中的对象,而不是数组本身。试试这个:
$scope.array.forEach(function (newJobItem) {
var JobId = 143;
newJobItem.JobId = JobId;
});