gpt4 book ai didi

javascript - 从本地存储 JavaScript 中的对象数组中删除一个对象

转载 作者:行者123 更新时间:2023-12-02 14:01:43 26 4
gpt4 key购买 nike

我在本地存储中有一个对象数组,如下所示:

ios = [{
"id" : 1,
"type" : "in",
"cat" : "Diversi",
"qty" : 50,
"date" : "2016-11-02T09:51:48.872Z",
"descr" : ""
}, {
"id" : 1,
"type" : "in",
"cat" : "Lavoro",
"qty" : 50,
"date" : "2016-11-02T10:08:11.362Z",
"descr" : ""
}];

我想用这个函数删除其中一个对象:

function remove(io) {
var ios = localStorage.getItem('ios') ? JSON.parse(localStorage.getItem('ios')) : [];
var index;
for (var i = 0; i < ios.length; i++) {
if (ios[i] === io) {
index=i;
break;
}
}
ios.splice(index, 1);
localStorage.setItem('ios', JSON.stringify(ios));
}

但是当我调用该函数并向其传递要删除的参数时,它不会删除我想要的那个,而是删除本地存储中的第一个。有人可以帮我吗?

最佳答案

这是因为你的条件永远不会得到满足,所以你的index变量总是未定义...所以要么在对象中传递一些唯一的键值,如“id”并比较该键值对,例如:-

function remove(id) {
var ios = localStorage.getItem('ios') ? JSON.parse(localStorage.getItem('ios')) : [];
var index;
for (var i = 0; i < ios.length; i++) {
if (ios[i].id === id) {
index=i;
break;
}
}
if(index === undefined) return
ios.splice(index, 1);
localStorage.setItem('ios', JSON.stringify(ios));
}

使用像 LODASH 这样的第三方 Doc如:-

function remove(io) {
var ios = localStorage.getItem('ios') ? JSON.parse(localStorage.getItem('ios')) : [];
var index;
index = _.findIndex(ios , io);
if(index === -1) return
ios.splice(index, 1);
localStorage.setItem('ios', JSON.stringify(ios));
}

关于javascript - 从本地存储 JavaScript 中的对象数组中删除一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40377933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com