我存储在localStorage的一个数组,看起来像这样:Javascript:从存储在localStorage中的数组中删除对象?
[
{
"location": "westcliff, uk",
"stopover": true
},
{
"location": "westcliff, uk",
"stopover": true
},
{
"location": "southend, uk",
"stopover": true
},
{
"location": "Leigh-on-sea, uk",
"stopover": true
}
]
我有一个按钮,当我点击,它会寻找localtion:
数组中,它会从阵列中删除该对象和然后再次存储在本地存储中。
按钮的代码如下所示:
$(document).on('click', ".cart-del", function() {
var retrievedObject2 = localStorage.getItem('waypoints');
var parsedObject2 = JSON.parse(retrievedObject2);
var result2 = parsedObject2.filter(function(x){return x.location !== "westcliff, uk"; });
var setLoc2 = JSON.stringify(result2);
localStorage.setItem('waypoints', setLoc2);
}):
这一切工作正常。
,我有是单击按钮时,它会删除所有“westcliff, uk
”对象的问题。
什么,我需要做的是只为每次点击删除1个对象!
可能有人请就这个问题咨询?
在此先感谢。
编辑:
我尝试这样做,这不会从数组中删除任何东西:
$(document).on('click', ".cart-del", function() {
var retrievedObject2 = localStorage.getItem('waypoints');
var parsedObject2 = JSON.parse(retrievedObject2);
for(var i = 0; i < parsedObject2.length; i++){
if(parsedObject2[i].text == "westcliff, uk"){
parsedObject2.splice(i, 1);
break;
}
}
var result2 = parsedObject2;
var setLoc2 = JSON.stringify(result2);
localStorage.setItem('waypoints', setLoc2);
}):
不要使用'.filter'。编写一个循环,删除找到的第一个匹配元素,然后跳出循环。 – Barmar
将数组存储在localStorage中与此问题完全无关。 – Barmar