[英]Check if object ID exists in Object array
我從 sessionStorage 解析了這個 object 數組。 我想在數組中添加一個項目,但如果它已經存在,則只更新該項目的數量,而不是再次添加它。 這是我到目前為止所嘗試的:
var tobeSaved = store.getters.printCart; //This is the data that I want to add
if(tobeSaved.length){
if(sessionStorage.length){
var existingCart = JSON.parse(sessionStorage.cart); //This is the sessionStorage items
var size = Object.keys(existingCart).length;
const found = tobeSaved.some(el => el.itemID === existingCart.itemID);
if(found){
} else{
existingCart.push(tobeSaved[0]);
let myObj_serialized = JSON.stringify(existingCart);
sessionStorage.setItem('cart', myObj_serialized);
}
} else{
let myObj_serialized = JSON.stringify(tobeSaved);
sessionStorage.setItem('cart', myObj_serialized);
}
這是我的 SessionStorage 數組:
0:
itemID: "11111"
itemName: "sessionItem1"
itemPrice: 550
itemQuantity: 1
1:
itemID: "22222"
itemName: "sessionItem2"
itemPrice: 550
itemQuantity: 1
這是我的 tobeSaved object:
itemID: "11111",
itemName: "sessionItem1"
itemPrice: 550
itemQuantity: 6
我想要做的是,如果 tobeSaved 已經存在於現有購物車中,它應該只更新數量,但如果沒有,則在數組中添加另一個 object。
這應該適合你。 您正在遍歷該項目,理想情況下您應該遍歷現有數組並檢查 ID 是否存在?
const found = tobeSaved.some(el => el.itemID === existingCart.itemID);
應該
const found = existingArray.some(el => el.itemID === toBeSaved.itemID);
或者就像我使用 find 所做的那樣,這對我來說似乎是個不錯的選擇。
let obj = exisitngArr.find(o => o.ID === newObj.ID);
var arr=[{
itemID: "11111",
itemName: "sessionItem1",
itemPrice: 550,
itemQuantity: 1
},
{
itemID: "22222",
itemName: "sessionItem2",
itemPrice: 550,
itemQuantity: 1
}];
window.sessionStorage.setItem('cart',JSON.stringify(arr));
var exisitngArr = JSON.parse(window.sessionStorage.getItem('cart'));
var newObj = {itemID: "11111",
itemName: "sessionItem1",
itemPrice: 550,
itemQuantity: 6}
function updateData(){
let obj = exisitngArr.find(o => o.ID === newObj.ID);
if(obj!== undefined && obj !== null){
obj.itemQuantity = newObj.itemQuantity;
} else {
exisitngArr.push(newObj);
}
window.sessionStorage.setItem('cart',JSON.stringify(exisitngArr));
}
updateData();
console.log(JSON.parse(window.sessionStorage.getItem('cart')));
或者這個怎么樣?
const SessionStorage = [
{
itemID: "11111",
itemName: "sessionItem1",
itemPrice: 550,
itemQuantity: 1,
},
{
itemID: "22222",
itemName: "sessionItem2",
itemPrice: 550,
itemQuantity: 1,
}
];
const toBeSaved = {
itemID: "11111",
itemName: "sessionItem1",
itemPrice: 550,
itemQuantity: 6,
}
const addOrUpdate = (SessionStorageArray, toBeSavedObject) => {
const index = SessionStorageArray.findIndex(session => session.itemID === toBeSavedObject.itemID);
if (index === -1) {
SessionStorageArray.push(toBeSavedObject);
} else {
SessionStorageArray[index].itemQuantity = toBeSavedObject.itemQuantity;
}
return SessionStorageArray;
};
console.table(addOrUpdate(SessionStorage, toBeSaved));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.