检查对象ID是否存在于对象数组中

时间:2020-06-30 07:09:26

标签: javascript session-storage

我从sessionStorage解析了这个对象数组。我想在数组中添加一个项目,但是如果它已经存在,则仅更新该项目的数量,而不是再次添加它。到目前为止,这是我尝试过的:

submit

这是我的SessionStorage阵列:

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

这是我的tobeSaved对象:

    0:
      itemID: "11111"
      itemName: "sessionItem1"
      itemPrice: 550
      itemQuantity: 1
    1:
      itemID: "22222"
      itemName: "sessionItem2"
      itemPrice: 550
      itemQuantity: 1

我想做的是如果tobeSaved已存在于现成的购物车中,它应该仅更新数量,但如果不存在,则在数组中添加另一个对象。

2 个答案:

答案 0 :(得分:1)

这应该为您工作。 您正在遍历该项目,理想情况下,您应该遍历现有数组并检查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')));

答案 1 :(得分:0)

还是这个呢?

web.ignoring().antMatchers("/actuator/shutdown")