我怎么能写这个javascript过滤器参数函数吧?

时间:2017-06-16 01:28:12

标签: javascript filter arguments

defaultConfig {
    applicationId 'com.example'
}

flavorGroups 'fruit', 'paid'

productFlavors {
    apple {
        flavorGroup 'fruit'
        applicationIdSuffix '.apple'
    }
    orange {
        flavorGroup 'fruit'
        applicationIdSuffix '.orange'
    }
    free {
        flavorGroup 'paid'
        applicationIdSuffix '.free'
    }
    premium {
        flavorGroup 'paid'
        applicationIdSuffix '.premium'
    }
}

//终止([3,5,1,2,2],2,3,5)应该返回[1]

1 个答案:

答案 0 :(得分:0)

正如 Jaromanda X 建议的那样,如果您使用的是ES2015/ES6,那么这是最佳解决方案:

function terminate(arr, ...args) {
  return arr.filter(el => !args.includes(el));
}

修改:抱歉! Array.prototype.includes不属于ES2015/ES6 ES2016的一部分。如果您使用Bitwise operator,则需要使用args.indexOf(el) === -1(如下一个示例)或!~args.indexOf(el)(使用ES2015/ES6)作为过滤谓词函数。

对于ES5这样的事情会起作用:

function terminate(arr) {
  var args = Array.prototype.slice.call(arguments, 1);
  return arr.filter(function (el) {
    return args.indexOf(el) === -1;
  });
}