我有这样如何根据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