给定一个数组和后续未知数量的参数,如何从初始数组中删除与这些参数具有相同值的所有元素?这就是我到目前为止所做的:
function destroyer(arr) {
var arrayOfArgs = [];
var newArray = [];
for (var i = 0; i < arguments.length; i++) {
newArray = arr.filter(function (value) {
return value !== arguments[i + 1];
});
}
return newArray;
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
答案 0 :(得分:1)
您可以将Array#filter
与箭头功能Array#includes
和rest parameters一起使用。
function destroyer(arr, ...remove) {
return arr.filter(e => !remove.includes(e));
}
console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3));
function destroyer(arr, ...remove) {
return arr.filter(e => !remove.includes(e));
}
var updatedArr = destroyer([1, 2, 3, 1, 2, 3], 2, 3);
console.log(updatedArr);
&#13;
ES5中的等效代码:
function destroyer(arr) {
var toRemove = [].slice.call(arguments, 1);
return arr.filter(function(e) {
return toRemove.indexOf(e) === -1;
});
}
console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3));
function destroyer(arr) {
var toRemove = [].slice.call(arguments, 1);
return arr.filter(function (e) {
return toRemove.indexOf(e) === -1;
});
}
console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3));
&#13;
答案 1 :(得分:1)
使用rest parameters指定后续参数,Array.prototype.filter()
使用arrow function来过滤arr
,使用Array.prototype.includes()
来确定是否args
包含特定项目。
function destroyer(arr, ...args) {
return arr.filter(x=> !args.includes(x))
}
console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3))