Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
筛选函数不工作的比较javascript_Javascript_Arrays_Function_Filter_Arguments - Fatal编程技术网

筛选函数不工作的比较javascript

筛选函数不工作的比较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)

我有一个javascript函数,它可以接受两个或多个参数。第一个参数总是一个数字数组。我需要从数组中删除那些与其他参数相等的数字,但是我的比较总是返回false

功能销毁程序(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