我想知道如何在javascript中实现一个方法,删除清除某个特定条件的数组中的所有元素。(最好不使用jQuery)
例如。
ar = [ 1, 2, 3, 4 ];
ar.removeIf( function(item, idx) {
return item > 3;
});
上面的代码将遍历数组中的每一项,并删除所有符合以下条件的项
对于条件(在本例中,item > 3)。
我刚开始使用javascript,我想知道是否有人知道一种简单有效的方法来完成这项工作。
--
更新
--
如果条件也能对对象属性起作用,那就更好了。
例如。
ar = [ {num:1, str:"a"}, {num:2, str:"b"}, {num:3, str:"c"} ];
ar.removeIf( function(item, idx) {
return item.str == "c";
});
如果出现以下情况,项将被移除的位置
--
update2
--
如果索引条件也能工作,那就太好了。
例如。
ar = [ {num:1, str:"a"}, {num:2, str:"b"}, {num:3, str:"c"} ];
ar.removeIf( function(item, idx) {
return idx == 2;
});
发布于 2013-04-14 13:08:40
您可以将自己的方法添加到
它会做一些类似的事情,如果
对你不起作用。
Array.prototype.removeIf = function(callback) {
var i = 0;
while (i < this.length) {
if (callback(this[i], i)) {
this.splice(i, 1);
}
else {
++i;
}
}
};
对我来说,这是JavaScript最酷的特性之一。Ian指出了一种更有效的方法来做同样的事情。考虑到它是JavaScript,每一点都有帮助:
Array.prototype.removeIf = function(callback) {
var i = this.length;
while (i--) {
if (callback(this[i], i)) {
this.splice(i, 1);
}
}
};
这就避免了甚至不需要担心更新的问题
或者抓住下一个项目,因为你的工作方式是向左而不是向右。
发布于 2013-04-14 13:02:24
您可以使用
数组过滤方法
..。
代码将如下所示:
ar = [1, 2, 3, 4];
ar = ar.filter(item => !(item > 3));
console.log(ar) // [1, 2, 3]
发布于 2013-04-14 13:01:01
您可以使用
,它做了相反的事情:
ar.filter(function(item, idx) {
return item <= 3;
});
https://stackoverflow.com/questions/15995963
复制相似问题