Javascript 如何修复从数组中消除给定参数集的函数?

Javascript 如何修复从数组中消除给定参数集的函数?,javascript,Javascript,功能销毁程序(arr){ 对于(var i=1;i您可以使用rest参数,.indexOf()来筛选不是在数组参数之后传递的参数的元素 功能销毁程序(arr,…not){ 返回阵列过滤器(功能(el){ 返回not.indexOf(el)=-1 }) } log(destroyer([1,2,3,1,2,3],2,3));您可以使用rest参数,.indexOf()来筛选数组参数之后未传递参数的元素 功能销毁程序(arr,…not){ 返回阵列过滤器(功能(el){ 返回not.indexO

功能销毁程序(arr){

对于(var i=1;i您可以使用rest参数,
.indexOf()
来筛选不是在数组参数之后传递的参数的元素

功能销毁程序(arr,…not){
返回阵列过滤器(功能(el){
返回not.indexOf(el)=-1
})
}

log(destroyer([1,2,3,1,2,3],2,3));
您可以使用rest参数,
.indexOf()
来筛选数组参数之后未传递参数的元素

功能销毁程序(arr,…not){
返回阵列过滤器(功能(el){
返回not.indexOf(el)=-1
})
}

log(destroyer([1,2,3,1,2,3],2,3));
您的问题是在嵌套函数中访问

基本上你有这个结构

function destroyer() {
    // ...
    arguments[0].filter(
        function(element) { // <-----------------------------+
            return element !== arguments[i] //               |
            //                 ^^^^^^^^^^^^ this points to --+
        }
    );
    // ...
}

.as控制台包装{max height:100%!important;top:0;}
您的问题是在嵌套函数中访问

基本上你有这个结构

function destroyer() {
    // ...
    arguments[0].filter(
        function(element) { // <-----------------------------+
            return element !== arguments[i] //               |
            //                 ^^^^^^^^^^^^ this points to --+
        }
    );
    // ...
}


.as控制台包装{最大高度:100%!重要;顶部:0;}
使用筛选器有什么问题?为什么不直接更改函数的签名?签名是什么?我应该如何更改?使用筛选器有什么问题?为什么不直接更改函数的签名?签名是什么?我应该如何更改?不是数组吗?你能告诉我.filter()有什么问题吗方法和我的for循环,以及我使用参数[I]访问参数的方式?是
…不是
从传递的其余参数创建一个数组。包括
控制台.log(参数[I],I)
.filter()
回调中;您应该能够查看问题。是不是…不是数组?您能告诉我.filter()有什么问题吗方法和我的for循环,以及我使用参数[I]访问参数的方式?是
…不是
从传递的其余参数创建一个数组。包括
console.log(参数[I],I)
.filter()
回调中;您应该能够查看问题。为什么您必须写出整个“console.log(destructor)”([1,2,3,1,2,3],2,3];“?你能说“驱逐舰([1,2,3,1,2,3],2,3);”,当我单击RUN时,同样的事情会出现?函数
destroyer
返回一个包含所需部分的数组。如果省略赋值或对返回值的进一步处理,则什么也看不到,或者结果消失了。testValue,I;是指var testValue,还是var I;好的,那么您要做的是存储参数[I]在var testValue中,它是公共的,因为它声明了outiside函数销毁程序。我对闭包不是很清楚。我理解的是在闭包中,你把一个private(在外部函数中声明)在内部函数中,私有变量可以在外部函数之外被其他函数访问。但是这里所有的变量都是公共的,因为它们都是在外部函数之外声明的。所以我看不到闭包。实际上只有
destropher
是公共的。
result
testValue
I
销毁程序的私有变量,但在筛选器回调的内部函数范围内。这是一个闭包。外部函数的私有变量也可以在内部函数和全局函数中访问。它们在它的范围内。为什么必须写出整个“console.log(销毁程序([1,2,3,1,2,3],2,3))你能说“驱逐舰([1,2,3,1,2,3],2,3);”,当我单击RUN时,同样的事情会出现?函数
destroyer
返回一个包含所需部分的数组。如果省略赋值或对返回值的进一步处理,则什么也看不到,或者结果消失了。testValue,I;是指var testValue,还是var I;好的,那么您要做的是存储参数[I]在var testValue中,它是公共的,因为它声明了outiside函数销毁程序。我对闭包不是很清楚。我理解的是在闭包中,你把一个private(在外部函数中声明)在内部函数中,私有变量可以在外部函数之外被其他函数访问。但是这里所有的变量都是公共的,因为它们都是在外部函数之外声明的。所以我看不到闭包。实际上只有
destropher
是公共的。
result
testValue
I
destroyer
的私有变量,但在筛选器回调的内部函数范围内。这是一个闭包。外部函数的私有变量也可以在内部函数以及全局函数中访问。它们在筛选器回调的范围内。