javascript - 删除数组中等于后续参数的值

标签 javascript

我希望这个函数能够工作并生成数组 [1,1],为什么它不工作?

 function destroyer(arr) {
      return arr.reduce(function(a,b){
         if (arguments.slice(1).every(function(arg){
             return arg !== b;
         })) a.push(b);
         return a;
      }, []);
    }

destroyer([1, 2, 3, 1, 2, 3], 2, 3);

最佳答案

我建议

function destroyer(arr) {
  return [].slice.call(arguments, 1).reduce(function(arr, num) {
    return arr.filter(function(item) {
      return num !== item;
    });
  }, arr);
}

或者,在 ES6 中,

function destroyer(arr, ...unwanted) {
  return unwanted.reduce((arr,num) => arr.filter(item => num !== item), arr);
}

关于javascript - 删除数组中等于后续参数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31867317/

相关文章:

javascript - 2 Xeditable Angular Directive(指令)上的取消按钮

javascript - 使用 Ember.js,我如何手动将模板和 View 范围限定到其相应的 Controller ?

javascript - 显示索非亚当前本地时间(小时): Minutes 24h format

javascript - Webpack + SASS + Autoprefixer 不生成 CSS 文件

javascript - 使用变量作为类名并编辑它

javascript - 切换选项卡时 ionic 后退按钮显示不正确

javascript - react : store items in a cart with a unique ID

javascript - 验证 A-Z0-9 的最大长度为 10,但允许用户输入空格(但最多跳过空格)

javascript - 将数组的所有值插入新行 - App 脚本

javascript - 以编程方式添加图像时未触发 Dropzone "addedfile"