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

紫衣仙女
TA贡献1839条经验 获得超15个赞
第二个arguments获取的是filter回调函数的参数类数组,只有val一个参数,长度永远为1。
解决方案是建立一个对外层函数arguments的引用
function destroyer() {
var argu = arguments
var arr1 = argu[0];
var arr2 = arr1.filter(function(val) {
var a = true;
for (var i = 1; i < argu.length; i++) {
if (val === argu[i]) {
a = false;
}
}
return a;
})
return arr2
}
console.log(destroyer([1, 2, 3, 1, 2, 3], 1, 2, 3))
添加回答
举报
0/150
提交
取消