【问题标题】:Getting "filter" to filter an entire array让“过滤器”过滤整个数组
【发布时间】:2016-01-26 00:46:06
【问题描述】:

我正在尝试编写一个函数来过滤另一个数组中的数字数组,但我似乎无法让它工作。例如,我有 2 个数组 -

  • a: [1,2,3]
  • b: [2,3]

我希望我的过滤函数从 a 中过滤掉 b 中的所有数字,留下一个仅包含 [1] 的数组。我的代码如下:

var args = [2,3];
var resulting = [1,2,3];

function destroy(val){
    return val !== args[];
}

resulting = resulting.filter(destroy);

return resulting;

【问题讨论】:

  • 两个数组都排序了吗?

标签: javascript arrays filter


【解决方案1】:

您当前正在将一个值与一个数组进行比较,该数组将始终返回 false。

这是一个应该起作用的回调:

function destroy(val){
    return args.indexOf(val) == -1;  // returns true if val isn't found in args
}

如果您可以使用 ES6,也可以使用 lambda:

val => !args.contains(val);  // returns true if val isn't found in args

【讨论】:

    【解决方案2】:

    过滤掉args中的项目:

    resulting.filter(function(item) {
        return item in args;
    });
    

    【讨论】:

    • 那行不通:in 运算符在应用于数组时只需检查提供的索引处的值。 in 更适合用于对象。 More info here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-11
    • 1970-01-01
    • 2019-12-29
    • 2019-04-30
    • 2021-12-13
    • 2021-03-17
    相关资源
    最近更新 更多