Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用纯javascript检查localstorage中是否存在项_Javascript - Fatal编程技术网

如何使用纯javascript检查localstorage中是否存在项

如何使用纯javascript检查localstorage中是否存在项,javascript,Javascript,我有一个关于纯javascript的项目,我正在将项目保存到localstorage。我只需要保存我正在保存的项目的id、名称和图像 然而,我的主要问题是我不想保存副本。因此,在保存之前,我必须检查副本是否存在 到目前为止,我已经尝试了几种方法,但似乎都不起作用 我可以毫无问题地将项目保存到localstorage,事实上我可以正确地从localstorage保存和删除项目 const cart_DB = new cartDB(); if( cart_DB.isAddedToCart(cart

我有一个关于纯javascript的项目,我正在将项目保存到localstorage。我只需要保存我正在保存的项目的id、名称和图像

然而,我的主要问题是我不想保存副本。因此,在保存之前,我必须检查副本是否存在

到目前为止,我已经尝试了几种方法,但似乎都不起作用

我可以毫无问题地将项目保存到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;
}

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

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

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);
}
数组。一些定义和用法

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

some方法对存在的每个元素执行一次函数 在阵列中:

如果它找到一个数组元素,其中函数返回一个真值,则有些元素返回真值,而不检查其余元素 价值观

否则返回false


当前代码的问题是什么?我也尝试过使用setItem,但是当我运行它时,我的代码仍然返回null。答案很懒。。只是你复制的一个助手函数,没有回答问题。首先,它没有被复制。其次,它展示了如何检查从本地存储返回的数组中是否存在具有给定id的项,从而回答了这个问题。这是哪里也找不到的,编辑后它突然成了手推车。可以复制代码来帮助人们,只需检查它是否完全回答了他们的问题。是的,我已将“items”更改为“carts”,因为OP编辑了他的代码,所以我也必须更新我的答案。对不起,我想我是在OP编辑完之后进来的,而你没有。在这一点上,它看起来很奇怪。UPVOT,因为答案正确:
isAddedToCart(id) {
    const carts = localStorage.getItem('carts');
    return carts.some(cart => cart.id == id);
}