如何通过Javascript的Filter方法将值传递给filter和值以用作条件?

时间:2016-12-30 07:01:09

标签: javascript

我正在尝试传递值[1,2,3,1,2,3],使用功能“驱逐舰”和值2,3(或更多值ex:1,3, 5.)从前一个数组中删除。始终第一部分是一个数组,用于从数组中删除和后跟要删除的数字

这里有你必须解决的代码:

function destroyer(arr) {
  // Remove all the values
  return arr;
}

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

2 个答案:

答案 0 :(得分:3)

尝试这种方法。它使用spread operatorincludes()函数

... - 是广告运营商



function destroyer(arr, ...items) {
    return arr.filter(i => !items.includes(i));
}

let arr = destroyer([1, 2, 3, 1, 2, 3], 2, 3);

console.log(arr);




答案 1 :(得分:0)

您可以使用arguments变量访问传递给函数的所有参数。注意,这是一个类似于对象但不是数组的数组,因此您必须将其转换为数组。当你这样做时,你的arr将是第一个值,即使这是参数的一部分。您可以使用.slice(1)从第二个元素中获取所有值。

ES5



function destroyer(arr) {
  var args = [].slice.call(arguments,1);
  return arr.filter(function(val){
    return args.indexOf(val) < 0
  })
}

console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3));
&#13;
&#13;
&#13;

ES6

&#13;
&#13;
function destroyer(arr) {
  var args = Array.from(arguments).slice(1);
  return arr.filter(x=>!args.includes(x));
}

console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3));
&#13;
&#13;
&#13;