2014-07-24 64 views
0

我創建數組對象類似如下:刪除對象的對象Jquery的

var numberOfSameDeficiency = []; 
for (var i = 0; i < result.length; i++) { 

        var deficiencyId = result[i].Deficiency_Id; 
        var deficiencyName = result[i].DeficiencyName; 

        //check to see if this deficiency is already in the list of available selections 
        if ($("#drpDeficiency option[value='" + deficiencyId + "']").length == 0) { 
         var option = $('<option>'); 
         option.attr('value', deficiencyId); 
         option.text(deficiencyName); 

         $select.append(option); 
        } 
        else { 
         Tests = {}; 
         Tests.TestId = testId; 
         Tests.DeficiencyId = deficiencyId; 
         numberOfSameDeficiency.push(Tests); 
        } 
       } 

而且我想刪除對象上不同的功能如下:

for (var i = 0; i < result.length; i++) { 
       console.log(numberOfSameDeficiency); 
       var isFound = false; 
       var deficiencyId = result[i].Deficiency_Id; 

       if (numberOfSameDeficiency) { 

        numberOfSameDeficiency.forEach(function (entry) { 
         if (entry.DeficiencyId != deficiencyId) { 
          isFound = true; 
         **numberOfSameDeficiency.splice(entry, 1); // Generating Error (Remove all items from array object)** 
          return; 
         } 

        }); 
        // console.log("end if"); 
       } 
       if (!isFound) { 
        $("#drpDeficiency option[value='" + deficiencyId + "']").remove(); 
       } 

      } 

那麼應該是什麼行代碼中有從數組對象中移除特定的對象。

回答

1

試試這個

for(i=myArray.length-1; i>=0; i--) { 
    if(myArray[i].field == "money") myArray.splice(i,1); 
} 

這也適用

myArray = [{name:"Alpesh", lines:"2,5,10"}, 
      {name:"Krunal", lines:"1,19,26,96"}, 
      {name:"Deep",lines:"3,9,62,36" }] 
johnRemovedArray = myArray 
       .filter(function (el) { 
         return el.name !== "Krunal"; 
         }); 
+0

我認爲這是正確的。在你的代碼中,你正在影響你正在調用'forEach'的原始列表 - 這是不好的。 for循環不關心數組的內容,只是長度 – JDandChips