如何使用纯JavaScript检查项目是否在本地存储中

时间:2019-05-20 09:36:57

标签: javascript

enter image description here我有一个纯JavaScript项目,正在将项目保存到本地存储。我只需要保存我要保存的项目的idnameimage

但是我的主要问题是我不想保存重复项。因此在保存之前,我必须检查是否存在。

到目前为止,我已经尝试了几种方法,但是似乎都行不通。下面是我的代码段。

我能够毫无问题地将项目保存到本地存储中,事实上,我可以正确地从本地存储中保存和删除项目。

const cart_DB = new cartDB();

if( cart_DB.isAddedToCart(cartInfo.id) === false) {

    // save item to database

}else {
    alert('item already in cart');
    return false;
}
class cartDB {



            /// save cart into localstorage ////
            saveIntoDB(cart) {
                const carts = this.getFromDB();

                carts.push(cart);

                // add the new array into localstorage
                localStorage.setItem('carts', JSON.stringify(carts));
            }
            /// save cart into localstorage ///



            /// return carts from storage ///
            getFromDB() {
                let carts;

                // check from local storage
                if (localStorage.getItem('carts') === null) {
                    carts = [];
                } else {
                    carts = JSON.parse(localStorage.getItem('carts'))
                }

                return carts;

            }
            /// carts from storage ends ///

        /// check if item already exists in database //////// 
    isAddedToCart(id) {

    if (localStorage.getItem(id) === null 
            ||localStorage.getItem(id).length === 0) {
                      return false;
                        }else {

                      return true;
                        }
            }
      //// checking items ends here ///////

}

我想要的是在添加另一个项目之前检查该项目是否存在。

2 个答案:

答案 0 :(得分:1)

假设您将商品存储在数组中,则可以使用以下功能检查商品是否已存在:

function checkIfItemExists (id) {
  const items = localStorage.getItem('carts') // assumes that 'carts' is an array
  let itemExists = false
  if (items) {
    const itemsData = JSON.parse(items)
    // check if item with given id exists in local storage data
    itemExists =  itemsData.find(item => item.id === id)
  }

  return itemExists
}

答案 1 :(得分:0)

如果您的目标是找出是否有重复项,Array.some()将是您要寻找的最佳功能。像这样将其实现为您的功能。

isAddedToCart(id) {
    const carts = localStorage.getItem('carts');
    return carts.some(cart => cart.id == id);
}

Array.some()的定义和用法

  

some()方法检查数组中的任何元素是否通过了   测试(作为功能提供)。

     

some()方法对每个存在的元素执行一次功能   在数组中:

     
      
  • 如果找到函数返回真值的数组元素,则some()返回真(并且不检查其余   值)

  •   
  • 否则它将返回false

  •