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