Как вставить ключ / значение в объекты 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;
});