从数组中删除对象

时间:2012-04-24 18:19:27

标签: javascript jquery arrays

我有一个具有以下结构的数组:

var y = [{id:12,count:10}, {id:23,count:89}, {id:21,count:100},]

如何删除ID为23的元素?

我不想用于在数组Array.prototype.remove

上创建原型方法

赞赏任何指针

由于

3 个答案:

答案 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方法。

其余的相当紧张,我认为......祝你好运