实现一个摧毁(destroyer)函数,第一个参数是待摧毁的数组,其余的参数是待摧毁的值。

fcc上的一道题,题目和代码如图:
这题的标准解法我是知道的,就是想试试不把arguments对象的内容转成数组能不能解。
查了下arguments和filter的用法感觉好像没什么问题?
可是输出的结果还是[1, 2, 3, 1, 2, 3],问下各位老哥为什么a的值没变呢?

https://img.mukewang.com/5c4abad20001d98008000243.jpg

缥缈止盈
浏览 757回答 1
1回答

紫衣仙女

第二个arguments获取的是filter回调函数的参数类数组,只有val一个参数,长度永远为1。解决方案是建立一个对外层函数arguments的引用function destroyer() {&nbsp; var argu = arguments&nbsp; var arr1 = argu[0];&nbsp; var arr2 = arr1.filter(function(val) {&nbsp; &nbsp; var a = true;&nbsp; &nbsp; for (var i = 1; i < argu.length; i++) {&nbsp; &nbsp; &nbsp; if (val === argu[i]) {&nbsp; &nbsp; &nbsp; &nbsp; a = false;&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; return a;&nbsp; })&nbsp; return arr2}console.log(destroyer([1, 2, 3, 1, 2, 3], 1, 2, 3))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript