如何将键/值推入JSON对象

时间:2014-12-02 21:18:38

标签: angularjs

我正在尝试将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));
});

2 个答案:

答案 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;
});