2015-10-30 72 views
0

我想通過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(); 
} 
+0

刪除/註釋返回true語句。 – jeff

回答

0

有幾件事我要改變,首先在for循環不需要調用getObjects()每次只需使用objects。然後在if只需檢查objects[i].title是否與inputValue相同。

function deleteFunction() 
{ 
    objects = getObjects(); 
    $("input:checked").each(function() 
    { 
     var inputValue = $(this).val(); 
     for(i = objects .length; i >=0; i--) 
     { 
      if(objects[i].title==inputValue) 
      { 
       objects.splice(i, 1);      
      } 
     } 

    }); 
    alert(JSON.stringify(objects)); 
    window.location.reload(); 
} 
+0

我改變了切片拼接:D弄亂了我的代碼很多最後幾小時:D – user3402571

+0

thanx ..這是解決方案 我添加它也在我的主要職位 – user3402571

0

陣列方法slice不刪除數組元素。改爲使用splice

有一些問題與您的代碼:

  1. 你錯過了關鍵字var有時。
  2. 變量i等於第一次迭代中數組的長度。它應該是一個減去。
  3. 而不是轉換爲JSON來比較對象,你可以剛剛比較title屬性的值。
相關問題