2014-12-02 92 views
6

我试图将Id推入Json数组对象中。每个对象在发送到apiController之前都必须插入''JobId':Value''。我想为此使用forEach循环,但我卡住了。现在不是将它插入数组中的每个对象中,而是插入数组的末尾。我有一个plunkr设置。 plunkr如何将键/值推入JSON对象

$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)); 
}); 

回答

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; 
}); 
+0

谢谢,在我的情况下,我需要它作为一个数组。所以你可以在括号中使用它:'$ scope.array.push({[JobId]:Job [JobId]});'希望这可以帮助任何人...... – Silvan 2016-02-04 10:31:13

4

你要操作的数组,而不是在阵列本身的对象。试试这个:

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

投票正确,但落后几分钟第一个人!谢谢 – texas697 2014-12-02 21:32:54