使用纯 javascript,从一个数组开始,我想通过删除与第二个数组中的任何值匹配的值来返回和数组。
我已经解决了这个问题,但我相信代码比实际需要的多。
我希望只使用 javascript 的更简洁或优雅的解决方案。
function removeValues(arr){
array = arguments[0];
args = Array.prototype.slice.call(arguments);
len = arguments.length;
filtered = array.filter(function(n){
x = true;
for (var i = 1; i < len; i++) {
if (n == args[i]) { x = false; }
}
return x;
});
return filtered;
}
removeValues([1,2,3,1,2,3],2,3);
应该使用一个函数,该函数使用一个或多个附加参数中的值从第一个参数(数组)中删除值。
最佳答案
当您使用 filter 时function 不是使用循环所必需的,因为你已经在循环中了。使用 [].slice.call(arguments)
将参数转换为数组后,您可以使用 indexOf负责返回值在数组中的位置,如果值不存在,则返回-1
,所以我们将取所有-1
的结果>
您的代码也可以减少:
function removeValues(arr){
return arr.filter(function(val){
return [].slice.call(removeValues.arguments).slice(1).indexOf(val) === -1
})
}
console.log(removeValues([1,2,3,1,2,3],2,3))
ES6 方法:使用Rest parameters和 Arrow Functions
var removeValues = (arr, ...values) => arr.filter(val => values.indexOf(val) === -1)
关于javascript:从第二个数组中的数组中删除值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32352054/