为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

缥缈止盈 2018-12-27 22:12:02
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))


查看完整回答
反对 回复 2019-01-25
  • 1 回答
  • 0 关注
  • 756 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号