我不知道为什么Javascript布尔对象在这里工作

时间:2017-04-06 14:04:16

标签: javascript

我刚开始在Freecodecamp.com上学习Javascript,我遇到了Seek and Destroy Challenge的问题。这就是问题所在:

  

寻求并摧毁

     

您将获得一个初始数组(第一个   驱逐舰功能中的参数),后跟一个或多个   参数。从初始数组中删除所有元素   与这些论点具有相同的价值。

这些是代码应该通过的测试:

  

destroyer([1, 2, 3, 1, 2, 3], 2, 3)应该返回[1, 1]

     

destroyer([1, 2, 3, 5, 1, 2, 3], 2, 3)应该返回[1, 5, 1]

     

destroyer([3, 5, 1, 2, 2], 2, 3, 5)应该返回[1]

     

destroyer([2, 3, 2, 3], 2, 3)应该返回[]

     

destroyer(["tree", "hamburger", 53], "tree", 53)应该返回["hamburger"]

由于我无法独自解决挑战,我在FreeCodeCamp wiki进行了研究以找到解决方案:

function destroyer(arr) {
    var args = Array.prototype.slice.call(arguments);
    for (var i = 0; i < arr.length; i++) {
        for (var j = 0; j < args.length; j++) {
            if (arr[i] === args[j]) {
                delete arr[i];
            }
        }
    }
return arr.filter(Boolean);
}

我得到布尔对象用作filter方法的参数,以消除由delete引起的数组中的空白点。但是,我在这里不明白的是,如果布尔对象不是函数,它的工作原理 - .filter()方法需要函数作为参数,according to MDN

0 个答案:

没有答案