Javascript SessionStorage复制具有相同ID的对象

Javascript SessionStorage复制具有相同ID的对象,javascript,session-storage,Javascript,Session Storage,我目前正在使用vue.js+sessionStorage制作一个简单的购物车。以下是我的js代码(vue.js方法): 这是我的对象数组: 临时项目: { itemID: "a1b1c1", itemName: "sessionItem1", itemPrice: 550, itemQuantity: 1, }, { itemID: "a2b2c2", itemName:

我目前正在使用vue.js+sessionStorage制作一个简单的购物车。以下是我的js代码(vue.js方法):

这是我的对象数组:

临时项目:

    {
    itemID: "a1b1c1",
    itemName: "sessionItem1",
    itemPrice: 550,
    itemQuantity: 1,
  },
  {
    itemID: "a2b2c2",
    itemName: "sessionItem2",
    itemPrice: 550,
    itemQuantity: 1,
  }
会话存储项目:

  0:
    itemID: "a1b1c1",
    itemName: "sessionItem1",
    itemPrice: 550,
    itemQuantity: 1,
  1:
    itemID: "a3b3c3",
    itemName: "sessionItem3",
    itemPrice: 550,
    itemQuantity: 1,
  2:
    itemID: "a2b2c2",
    itemName: "sessionItem2",
    itemPrice: 550,
    itemQuantity: 1,
 
我想实现的是,每当tempitem对象与sessionStorage项具有相同的ID时,它们的数量就会相加并传递给sessionStorage项,但如果没有,它就会在sessionStorage中添加另一个索引。但实际情况是,它没有同时添加这两个数量,而是创建了另一个具有相同项但数量不同的索引

0:
    itemID: "a1b1c1",
    itemName: "sessionItem1",
    itemPrice: 550,
    itemQuantity: 1,
  1:
    itemID: "a1b1c1",
    itemName: "sessionItem1",
    itemPrice: 550,
    itemQuantity: 5,
我如何做到这一点

您可以使用此逻辑对数量求和,其余的都保持不变。 循环新数组项,检查现有数组中的对象 ,如果存在,则添加数量,否则在 现有阵列

var-arr=[{
itemID:“a1b1c1”,
项目名称:“sessionItem1”,
售价:550,
项目数量:1,
},{
itemID:“a3b3c3”,
项目名称:“SessionItemM3”,
售价:550,
itemQuantity:1},
{
itemID:“a2b2c2”,
项目名称:“SessionItemM2”,
售价:550,
项目数量:1}];
//新项目数组
var newArr=[{
itemID:“a1b1c1”,
项目名称:“sessionItem1”,
售价:550,
itemQuantity:1},
{
itemID:“a1b1c1”,
项目名称:“sessionItem1”,
售价:550,
项目数量:5},
{
itemID:“a5b5c5”,
项目名称:“sessionItem1”,
售价:550,
项目数量:5}]
newArr.forEach(newEle=>{
让obj=arr.find(ob=>ob.itemID==newEle.itemID);
如果(对象!==未定义){
obj.itemQuantity+=newEle.itemQuantity;
}否则{
arr.push(newEle);
}
})
控制台日志(arr);

该解决方案是否不像另一个问题中提供的那样适用于您?您想汇总数量还是覆盖数量?它以前确实回答了我的问题,而且它在较早时起作用,但是如果我的tempitem中有两个或更多对象,则它不起作用,因此我尝试了发布在此处的另一种解决方案如果
tempitem
是一个项目数组,您必须对数组中的每个项执行单独的查找。@Harmandepsingkalsi我想对数量进行汇总,因为ID应该是唯一的,所以您可以使用ID作为键的对象而不是数组。您可以跳过
obj==在这种情况下为空。这为我解决了问题!谢谢@harmandepsingkalsi!我刚刚把sessionStorage.setItem放在条件中,现在它工作正常了。很高兴听到Ryan的话。学习愉快!
0:
    itemID: "a1b1c1",
    itemName: "sessionItem1",
    itemPrice: 550,
    itemQuantity: 1,
  1:
    itemID: "a1b1c1",
    itemName: "sessionItem1",
    itemPrice: 550,
    itemQuantity: 5,