Как вставить ключ / значение в объекты JSON

Я пытаюсь вставить идентификатор в массив объектов Json. Каждый объект должен иметь'" JobId": Value', вставленный перед отправкой в 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 ответов


то, что вы делаете, повторяет каждый элемент через $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;
});

вы хотите управлять объектами в массиве, а не самим массивом. Попробуйте это:

$scope.array.forEach(function (newJobItem) { 
   var JobId = 143;
   newJobItem.JobId = JobId;
});