我想通過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