繁体   English   中英

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

[英]How can I check whether an item exists in localstorage or not using pure javascript

在此处输入图片说明 我有一个关于纯JavaScript的项目,我正在努力将项目保存到本地存储。 我只需要保存我要保存的项目的idnameimage

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

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

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

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 ///////

}

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

假设您将项目存储在数组中,则可以使用以下函数检查项目是否已存在:

function checkIfItemExists (id) {
  const items = localStorage.getItem('carts') 
  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
}

如果您的目标是找出是否存在重复项,则Array.some()将是您想要的最佳功能。 像这样实现它到您的功能。

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

Array.some()的定义和用法

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

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

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

  • 否则返回false

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM