我想通过javascript从我的数组中删除对象。我建立一个简单的移动jQuery应用程序,并希望从数组中删除项目。我使用下面的代码。我有一个带有复选框的列表。每个复选框都有一个属于列表项的值。所以当多个复选框被选中时,它应该从数组中删除所有这些对象(项目)。在javascript中删除数组对象的值(jquery)
function deleteFunction()
{
objects = getObjects();
$("input:checked").each(function()
{
var inputValue = $(this).val();
for(i = getObjects().length; i >=0; i--)
{
if('{"title":"'+ inputValue + '"}' == JSON.stringify(objects[i]))
{
objects.splice(i, 1);
return true;
}
}
});
alert(JSON.stringify(objects));
window.location.reload();
}
的讨厌的事如下: 当I切片从阵列的对象,该对象是在第二次迭代恢复。所以它总是只从数组中移除1个对象。
为了测试我的输出,我用if语句中的以下代码:
alert(i);
alert(JSON.stringify(objects[i]));
objects.splice(i, 1);
alert(i);
alert(JSON.stringify(objects));
return true;
的输出如下
1
{"title":"hi2"}
1
[{"title":"hi1"}, {"title":"hi3"}]
2
{"title":"hi3"}
2
[{"title":"hi1"}, {"title":"hi2"}]
,所以我切HI2,但已恢复
感谢名单回答并作出回应
解决方案感谢到depperm + indubitablee:
function deleteFunction()
{
var objects = getObjects();
$("input:checked").each(function()
{
var inputValue = $(this).val();
for(i = objects.length -1; i >=0; i--)
{
if(objects[i].title == inputValue)
{
objects.splice(i, 1);
}
}
});
localStorage.setItem("objects", JSON.stringify(objects));
window.location.reload();
}
删除/注释返回true语句。 – jeff