首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >javascript -删除条件中的数组元素

javascript -删除条件中的数组元素
EN

Stack Overflow用户
提问于 2013-04-14 12:57:51
回答 8查看 122.9K关注 0票数 97

我想知道如何在javascript中实现一个方法,删除清除某个特定条件的数组中的所有元素。(最好不使用jQuery)

例如。

代码语言:javascript
复制
ar = [ 1, 2, 3, 4 ];
ar.removeIf( function(item, idx) {
    return item > 3;
});

上面的代码将遍历数组中的每一项,并删除所有符合以下条件的项

对于条件(在本例中,item > 3)。

我刚开始使用javascript,我想知道是否有人知道一种简单有效的方法来完成这项工作。

--

更新

--

如果条件也能对对象属性起作用,那就更好了。

例如。

代码语言:javascript
复制
ar = [ {num:1, str:"a"}, {num:2, str:"b"}, {num:3, str:"c"} ];
ar.removeIf( function(item, idx) {
    return item.str == "c";
});

如果出现以下情况,项将被移除的位置

--

update2

--

如果索引条件也能工作,那就太好了。

例如。

代码语言:javascript
复制
ar = [ {num:1, str:"a"}, {num:2, str:"b"}, {num:3, str:"c"} ];
ar.removeIf( function(item, idx) {
    return idx == 2;
});
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-04-14 13:08:40

您可以将自己的方法添加到

它会做一些类似的事情,如果

对你不起作用。

代码语言:javascript
复制
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,每一点都有帮助:

代码语言:javascript
复制
Array.prototype.removeIf = function(callback) {
    var i = this.length;
    while (i--) {
        if (callback(this[i], i)) {
            this.splice(i, 1);
        }
    }
};

这就避免了甚至不需要担心更新的问题

或者抓住下一个项目,因为你的工作方式是向左而不是向右。

票数 59
EN

Stack Overflow用户

发布于 2013-04-14 13:02:24

您可以使用

数组过滤方法

..。

代码将如下所示:

代码语言:javascript
复制
ar = [1, 2, 3, 4];
ar = ar.filter(item => !(item > 3));
console.log(ar) // [1, 2, 3]

票数 140
EN

Stack Overflow用户

发布于 2013-04-14 13:01:01

您可以使用

,它做了相反的事情:

代码语言:javascript
复制
ar.filter(function(item, idx) {
    return item <= 3;
});
票数 41
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15995963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档