我有一个具有以下结构的数组:
var y = [{id:12,count:10}, {id:23,count:89}, {id:21,count:100},]
如何删除ID为23的元素?
我不想用于在数组Array.prototype.remove
上创建原型方法赞赏任何指针
由于
答案 0 :(得分:5)
ES5代码:
y = y.filter(function( obj ) {
return obj.id !== 23;
});
ES5受到所有主流浏览器的广泛支持。不过,您可能希望包含几个Shims来备份旧的浏览器
答案 1 :(得分:3)
for (i in y) {
if (y[i].id == 23) {
y.splice(i, 1);
break;
}
}
答案 2 :(得分:0)
Denis Ermolin的答案是一个选项,虽然可能会出现一些问题,这就是我的建议:
for(var i=0;i<y.length;i++)
{
if (y[i].hasOwnProperty('id') && y[i].id === 23)
{
delete(y[i]);
break;
}
}
使用数组时,最好避免使用for - in
循环,因为这会循环遍历Array.prototype
,因此i
可能突然包含length
,而不是索引数。
当你处理对象时,for in
循环是一件很棒的事情,但是再次:它遍历原型,这就是为什么你最好使用hasOwnProperty
方法。
其余的相当紧张,我认为......祝你好运