gpt4 book ai didi

javascript - 添加或替换到 JavaScript 中的对象数组中

转载 作者:行者123 更新时间:2023-12-03 03:45:27 25 4
gpt4 key购买 nike

如何添加或替换到现有的对象数组中。假设我有这样的现有数组:

productOffer.view = [
{id: 1, name: "john"},
{id: 2, name: "Sam"}
]

productOffer.view.forEach(function(el,i){
if(el.id == productOffer.createId){
productOffer.view[i] = ajaxCall.responseJSON
} else {
productOffer.view.push(ajaxCall.responseJSON);
}
});

尝试了以下方法,但值被替换而不是添加:

productOffer.hashedArr = productOffer.hash(productOffer.view);
productOffer.view.forEach(function(el,i){
if(el.id == productOffer.createId){
productOffer.hashedArr[i] = ajaxCall.responseJSON
} else {
productOffer.hashedArr[i] = el;
}
});

for(var key in productOffer.hashedArr){
productOffer.view = [];
productOffer.view.push(productOffer.hashedArr[key]);
}


hash: function(arr){
var arrIndex = Object.create(null);
arr.forEach(function(el){
arrIndex[el.id] = el;
});
console.log('hash ', arrIndex);
return arrIndex;
},

最佳答案

您可以使用 findIndex() 来检查数组中是否存在具有相同 id 的对象,以及是否用新对象替换它,或者是否不将新对象推送到数组。

var arr = [
{id: 1, name: "john"},
{id: 2, name: "Sam"}
]

function addOrReplace(data, obj) {
var i = data.findIndex(function(e) {
return e.id == obj.id;
});

i != -1 ? data[i] = obj : data.push(obj);
return data;
}

console.log(addOrReplace(arr, {id: 1, name: "lorem"}))
console.log(addOrReplace(arr, {id: 3, name: "ipsum"}))

关于javascript - 添加或替换到 JavaScript 中的对象数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45411894/

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