javascript - 将数组和更多参数传递给函数。如何?

标签 javascript arrays

我有一个函数,它接受一个数组和更多的参数,如下所示: 函数 arrayandmore([1, 2, 3], 2, 3) 我需要返回数组 ([1, 2, 3]),但不包含那些等于数组后面的参数的元素。所以在这种情况下,返回的数组将是: ([1]).

我的方法之一是:

function destroyer(arr) {
  var args = Array.from(arguments);
  var i = 0;
  while (i < args.length) {
    var result = args[0].filter(word => word !== args[i]);
    i++;
  }
  console.log(result);
}

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

控制台返回:

[ 1, 1, 4 ]

我不明白,为什么它也返回一个 - 我不明白,为什么它不起作用。

使用splice也是一样

function destroyer(arr) {
  var args = Array.from(arguments);
  var quant = args.length - 1;
  for (var i = 1; i <= quant; i++) {
    if (arr.indexOf(args[i]) !== -1) {
      arr = arr.splice(arr.indexOf(args[i]));
    }
    console.log(arr);
  }
}
destroyer([1, 1, 3, 4], 1, 3); 

我认为,这两种方式都应该可行。但我不明白他们为什么不这样做。

最佳答案

您的 while 将不起作用,因为 result 在每个循环中都被覆盖。因此,它只会删除 destroyer 函数的最后一个参数

您可以使用 rest parameter syntax分隔数组和要删除的项目。

然后使用filterincludes像这样:

function destroyer(arr, ...toRemove) {
  return arr.filter(a => !toRemove.includes(a))
}

console.log(destroyer([1, 1, 3, 4, 5], 1, 3))

关于javascript - 将数组和更多参数传递给函数。如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54516295/

相关文章:

javascript - 使用 jquery 将位置从相对位置更改为固定位置?

javascript - Jasmine 单元测试的方法称为

javascript - 如何将表输入相乘

javascript - Google Timeline - 根据名称更改数据颜色

php - 更快地找到数组中单词之间的最小距离

javascript - 从 JavaScript 数组中删除嵌套的空值

javascript - 使用 jQuery 创建具有多个类的 HTML 元素

arrays - 使用 "sort"对 ruby​​ 中的对象数组进行排序

php - MongoDB 组数组值是否存在检查

java - 如何限制数组的输入量? ( java )