2013-03-28 28 views
0

我有這樣如何根據id刪除內部數組完整?

var curChanges = [ 
        {id:1, isChecked:true}, 
        {id:2, isChecked:false}, 
        {id:3, isChecked:true} 
       ]; 

現在陣列,如果我想刪除第二陣列即{ID:2,器isChecked:假}動態,我該怎麼辦? 這裏id是唯一的。

在此先感謝。

+1

那不可能存在。你不能在對象中使用'='符號。它必須是':' – 2013-03-28 11:16:16

回答

2

首先,你有一個語法錯誤。對象的屬性值設置與:,不與=

var curChanges = [ 
    { 
     id: 1, 
     isChecked: true 
    }, 
    // etc... 
]; 

假設數組中元素的順序是不固定的,最簡單的方式來實現你想要做什麼會使用ES5 Array.prototype.filter方法:

curChanges.filter(function (elem) { 
    return elem.id !== 2; 
}); 

如果從過濾函數返回true,該元素將留在數組中。如果您返回false,它將被刪除。

+1

只是爲了澄清,你將不得不'curChanges = curChanges.filter(函數),因爲它返回一個新的數組,並且不會修改現有的數組。 – 2013-03-28 11:22:13

+0

+1因爲正確。一個exmaple函數「ismoveElementWithId'會很好,但一切都完好無損。:) – 2013-03-28 11:22:26

0

首先,無效數組。應:=

,使其成爲:

var curChanges = [ {id:1, isChecked:true}, {id:2, isChecked:false}, {id:3, isChecked:true}]; 

使用過濾器除去基於ID:

curChanges.filter(function(i) { return i.id!=2;}) 

,或者直接刪除第二個元素:

curChanges.splice(1,1);