我有一个具有以下结构的数组:
var y = [{id:12,count:10}, {id:23,count:89}, {id:21,count:100},]
如何删除带有 id:23 的元素?
我不愿意使用在数组 Array.prototype.remove 上创建原型方法
任何指针表示赞赏
谢谢
我有一个具有以下结构的数组:
var y = [{id:12,count:10}, {id:23,count:89}, {id:21,count:100},]
如何删除带有 id:23 的元素?
我不愿意使用在数组 Array.prototype.remove 上创建原型方法
任何指针表示赞赏
谢谢
ES5 代码:
y = y.filter(function( obj ) {
return obj.id !== 23;
});
ES5 被所有主流浏览器广泛支持。不过,您可能希望包含几个 Shim 来备份旧的浏览器
for (i in y) {
if (y[i].id == 23) {
y.splice(i, 1);
break;
}
}
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
方法的原因。
其余的都很困难,我想……祝你好运