Javascript 无法使用对象id从localStorage中删除对象

Javascript 无法使用对象id从localStorage中删除对象,javascript,Javascript,每当用户单击“删除”按钮时,就会调用removeFromLocalStorage()函数,该函数接收一个数字类型变量pizzaId。现在,这个pizzaId存储在本地存储中,我想从本地存储中删除与这个pizzaId关联的对象 控制台输出 请帮助我使用productID从本地存储中删除对象。如果您只需要删除所选的产品,您可以这样做: function removeLocalStorageHelper(item, pizzaId) { console.log(item.productID);

每当用户单击“删除”按钮时,就会调用
removeFromLocalStorage()
函数,该函数接收一个数字类型变量
pizzaId
。现在,这个
pizzaId
存储在本地存储中,我想从本地存储中删除与这个
pizzaId
关联的对象

控制台输出


请帮助我使用
productID

从本地存储中删除对象。如果您只需要删除所选的产品,您可以这样做:

function removeLocalStorageHelper(item, pizzaId) {
  console.log(item.productID);
  console.log(pizzaId);
  if (item.productID == pizzaId) {
    console.log("Working fine");
    localStorage.removeItem(item);
    console.log(localStorage);
  }
}
function removeFromLocalStorage(pizzaId) {
  var locStore = JSON.parse(localStorage.getItem("selectedProduct"));
  var cartRowContents = locStore.map((item) =>
    removeLocalStorageHelper(item, pizzaId)
  );
}

如果您只需要删除所选的产品,您可以这样做:

function removeLocalStorageHelper(item, pizzaId) {
  console.log(item.productID);
  console.log(pizzaId);
  if (item.productID == pizzaId) {
    console.log("Working fine");
    localStorage.removeItem(item);
    console.log(localStorage);
  }
}
function removeFromLocalStorage(pizzaId) {
  var locStore = JSON.parse(localStorage.getItem("selectedProduct"));
  var cartRowContents = locStore.map((item) =>
    removeLocalStorageHelper(item, pizzaId)
  );
}

不能直接从存储阵列中删除项。为此,您需要从阵列中删除所需的元素,然后再次插入到localStorage,如下所示。否则,它将从本地存储中删除完整列表

注意:将新项添加到本地存储也需要执行相同的操作

函数从本地存储中移除(pizzaId){
var locStore=JSON.parse(localStorage.getItem(“selectedProduct”);
var cartRowContents=locStore.filter((项目)=>item.productID!==pizzaId);
localStorage.setItem(“selectedProduct”,JSON.stringify(cartRowContents))

}
您不能直接从存储阵列中删除项。为此,您需要从阵列中删除所需的元素,然后再次插入到localStorage,如下所示。否则,它将从本地存储中删除完整列表

注意:将新项添加到本地存储也需要执行相同的操作

函数从本地存储中移除(pizzaId){
var locStore=JSON.parse(localStorage.getItem(“selectedProduct”);
var cartRowContents=locStore.filter((项目)=>item.productID!==pizzaId);
localStorage.setItem(“selectedProduct”,JSON.stringify(cartRowContents))

}
当我查看您的代码时,我看到您正在从localStorage中检索项目,就像这样
localStorage.getItem(“selectedProduct”)
这里的问题是您想删除整个
LocalStore
还是只删除其中的一部分。可能
locStore
是来自多个产品的复杂集合(数组),而不是如代码所示的单个实体

localStorage.removeItem("selectedProduct");
如果是这种情况,你需要这样做

var cartRowContents = locStore.map((item) =>
   removeLocalStorageHelper(item, pizzaId));
var locStore = locStore.filter(function(item, index){ 
    return item.productID != pizzaId;
});
现在您有了一个
locStore
集合,其中没有要删除的项,您必须像这样将其保存回localStorage

var cartRowContents = locStore.map((item) =>
   removeLocalStorageHelper(item, pizzaId));
var locStore = locStore.filter(function(item, index){ 
    return item.productID != pizzaId;
});
实际上,您正在使用不包含已删除产品的新值覆盖
localStorage
中的旧
selectedProduct

如果出于某种原因,
locStore
只是一个简单的JSON对象,您可以从
localStorage

localStorage.setItem('selectedProduct', JSON.stringify(locStore));

当我查看代码时,我看到您正在从localStorage中检索项目,如下所示
localStorage.getItem(“selectedProduct”)
这里的问题是您希望删除整个
LocalStore
还是只删除其中的一部分。可能
locStore
是来自多个产品的复杂集合(数组),而不是如代码所示的单个实体

localStorage.removeItem("selectedProduct");
如果是这种情况,你需要这样做

var cartRowContents = locStore.map((item) =>
   removeLocalStorageHelper(item, pizzaId));
var locStore = locStore.filter(function(item, index){ 
    return item.productID != pizzaId;
});
现在您有了一个
locStore
集合,其中没有要删除的项,您必须像这样将其保存回localStorage

var cartRowContents = locStore.map((item) =>
   removeLocalStorageHelper(item, pizzaId));
var locStore = locStore.filter(function(item, index){ 
    return item.productID != pizzaId;
});
实际上,您正在使用不包含已删除产品的新值覆盖
localStorage
中的旧
selectedProduct

如果出于某种原因,
locStore
只是一个简单的JSON对象,您可以从
localStorage

localStorage.setItem('selectedProduct', JSON.stringify(locStore));

您需要提供密钥才能从本地存储中删除特定项。
item
在映射器函数中不是密钥,而是活动对象。您需要提供密钥才能从本地存储中删除特定项。
item
在映射器函数中不是密钥,它是一个活动对象。在selectedProduct中的每个对象内都有一个键“productId”。我想删除productId==pizzaIdOkay的对象,现在我明白了。Anton Kovachev的答案应该能回答您的问题。selectedProduct中的每个对象内部都有一个键“productId”。我想删除productId==pizzaIdOkay的对象,现在我明白了。安东·科瓦切夫的回答应该能回答你的问题。谢谢。它起作用了。我们只需要使用localStorage.setItem(“selectedProduct”,JSON.stringify(cartRowContents));谢谢它起作用了。我们只需要使用localStorage.setItem(“selectedProduct”,JSON.stringify(cartRowContents));