2013-03-28 49 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);