筛选函数不工作的比较javascript
我有一个javascript函数,它可以接受两个或多个参数。第一个参数总是一个数字数组。我需要从数组中删除那些与其他参数相等的数字,但是我的比较总是返回false筛选函数不工作的比较javascript,javascript,arrays,function,filter,arguments,Javascript,Arrays,Function,Filter,Arguments,我有一个javascript函数,它可以接受两个或多个参数。第一个参数总是一个数字数组。我需要从数组中删除那些与其他参数相等的数字,但是我的比较总是返回false 功能销毁程序(arr){ var neo=[]; 对于(x=1;x,这里有一个结合使用过滤器和方法的实现: 功能销毁程序(arr){ var args=Array.prototype.slice.call(参数,1); 返回arr.filter(函数(i){ 返回参数indexOf(i)
功能销毁程序(arr){
var neo=[];
对于(x=1;x,这里有一个结合使用过滤器和方法的实现:
功能销毁程序(arr){
var args=Array.prototype.slice.call(参数,1);
返回arr.filter(函数(i){
返回参数indexOf(i)<0;
});
}
console.log(destroyer([1,2,3,1,2,3],2,3));//打印[1,1]
下面是一个结合使用筛选器和方法的实现:
功能销毁程序(arr){
var args=Array.prototype.slice.call(参数,1);
返回arr.filter(函数(i){
返回参数indexOf(i)<0;
});
}
console.log(destroyer([1,2,3,1,2,3],2,3));//打印[1,1]
匿名函数看到的参数与destroyer
函数看到的参数不同。由于arr.filter
调用回调函数,它会得到新参数
下面修复了代码,请参阅Robby的答案以了解替代方法
function destroyer(arr) {
var args = arguments;
return arr.filter(function(a) {
for(var x = 1; x < args.length; x++) {
if(args[x] == a) {
return false;
}
}
return true;
});
}
功能销毁程序(arr){
var args=参数;
返回arr.filter(函数(a){
对于(变量x=1;x
它将外部函数的参数分配给args
变量,使它们可以从匿名函数访问。匿名函数看到的参数与销毁程序函数看到的参数不同。由于arr.filter
调用回调函数,因此它会得到新的参数争论
下面修复了代码,请参阅Robby的答案以了解替代方法
function destroyer(arr) {
var args = arguments;
return arr.filter(function(a) {
for(var x = 1; x < args.length; x++) {
if(args[x] == a) {
return false;
}
}
return true;
});
}
功能销毁程序(arr){
var args=参数;
返回arr.filter(函数(a){
对于(变量x=1;x
它将外部函数的参数分配给args
变量,使它们可以从匿名函数访问。您的代码部分不起作用,因为您试图在回调函数(a){}中运行与销毁程序的参数[x]的比较,该函数有自己的参数[x]
Javascript将数组元素与函数(a){}的参数进行比较
功能销毁程序(arr){
var neo=[];
对于(x=1;x您的代码无法工作,部分原因是您试图在回调函数(a){}中运行与destroyer的参数[x]的比较,该函数有自己的参数[x]
Javascript将数组元素与函数(a){}的参数进行比较
功能销毁程序(arr){
var neo=[];
对于(x=1;x代码中有两个错误,正确的错误如下:
功能销毁程序(arr){
var arg=参数;
对于(x=1;x代码中有两个错误,正确的错误如下:
功能销毁程序(arr){
var arg=参数;
对于(x=1;x