将数组和其他参数传递到函数中.如何



我有一个函数,它接受一个数组和其他参数,如下所示:函数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 ]

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

与使用拼接相同。

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参数语法来分隔数组和要删除的项。

然后像这样使用filterincludes

function destroyer(arr, ...toRemove) {
return arr.filter(a => !toRemove.includes(a))
}
console.log(destroyer([1, 1, 3, 4, 5], 1, 3))

最新更新