我有這樣如何根據id刪除內部數組完整?
var curChanges = [
{id:1, isChecked:true},
{id:2, isChecked:false},
{id:3, isChecked:true}
];
現在陣列,如果我想刪除第二陣列即{ID:2,器isChecked:假}動態,我該怎麼辦? 這裏id是唯一的。
在此先感謝。
我有這樣如何根據id刪除內部數組完整?
var curChanges = [
{id:1, isChecked:true},
{id:2, isChecked:false},
{id:3, isChecked:true}
];
現在陣列,如果我想刪除第二陣列即{ID:2,器isChecked:假}動態,我該怎麼辦? 這裏id是唯一的。
在此先感謝。
首先,你有一個語法錯誤。對象的屬性值設置與:
,不與=
:
var curChanges = [
{
id: 1,
isChecked: true
},
// etc...
];
假設數組中元素的順序是不固定的,最簡單的方式來實現你想要做什麼會使用ES5 Array.prototype.filter
方法:
curChanges.filter(function (elem) {
return elem.id !== 2;
});
如果從過濾函數返回true
,該元素將留在數組中。如果您返回false
,它將被刪除。
只是爲了澄清,你將不得不'curChanges = curChanges.filter(函數),因爲它返回一個新的數組,並且不會修改現有的數組。 – 2013-03-28 11:22:13
+1因爲正確。一個exmaple函數「ismoveElementWithId'會很好,但一切都完好無損。:) – 2013-03-28 11:22:26
首先,無效數組。應:
不=
,使其成爲:
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);
那不可能存在。你不能在對象中使用'='符號。它必須是':' – 2013-03-28 11:16:16