gpt4 book ai didi

javascript - Angularjs通过forEach将对象加载到数组中

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:55:54 25 4
gpt4 key购买 nike

我有一组药物代码 'BARB'、'HALU'、'METH'。我想遍历这些代码并为每个代码创建一个新对象。

var saveObj = {};
saveObj.SelectedList = [];
angular.forEach(self.DrugNamesSelected, function(value, key) {
//Load Objects into array
var newObj = {};
newObj = self.Selected;
newObj.FK_CLNT_PERSFK_PER = $routeParams.personId;
newObj.DRUG_TYP_CODE = value;
saveObj.SelectedList.push(newObj);
});

这就是我想要的

saveObj.SelectedList[0].DRUG_TYP_CODE = 'METH' saveObj.SelectedList[1].DRUG_TYP_CODE = 'METH' saveObj.SelectedList[2].DRUG_TYP_CODE = 'METH'

这就是我想要的

saveObj.SelectedList[0].DRUG_TYP_CODE = 'BARB' saveObj.SelectedList[1].DRUG_TYP_CODE = 'HALU' saveObj.SelectedList[2].DRUG_TYP_CODE = 'METH'

最佳答案

似乎 newObj = self.Selected; 让你成为一个问题。所以发生的事情是每个元素都存储了 self.Selected 的引用(即所有对象都引用单个内存引用)。因此,当最后一个值更新为 METH 时,所有 3 个元素都具有相同的 self.Selected 值。

angular.forEach(self.DrugNamesSelected, function(value, key) {
//Load Objects into array
var newObj = {};
//newObj = self.Selected; //removed this line
newObj.FK_CLNT_PERSFK_PER = $routeParams.personId;
newObj.DRUG_TYP_CODE = value;
saveObj.SelectedList.push(newObj);
});

如果您出于某种原因需要特定的对象分配,我建议您使用 Object.assign 它将复制 self.Selected 属性到 newObj

Object.assign(newObj, self.Selected)

IE11 不支持开箱即用的 Object.assign。您可以考虑从 here 添加 polyfill

关于javascript - Angularjs通过forEach将对象加载到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42776959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com