c语言摧毁数组,摧毁数组

金克斯的迫击炮!

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

知识点

arguments

Array.filter()

Array.indexOf()

arguments主要用于不清楚会有多少个实参

function destroyer(arr) {

// 请把你的代码写在这里

var destroy = [];

for(var i=1;i

destroy.push(arguments[i]);

}

arr = arr.filter(function(value){return this.indexOf(value) == -1;},destroy);

return arr;

}

destroyer([1, 2, 3, 1, 2, 3], 2, 3);

曾经这么写过:输出的都是想要的结果,可是就是通过不了测试用例,希望高手看到后能给予解答,

function destroyer(arr) {

for(var i=1;i

arr = arr.filter(function(value){return value !== this;},arguments[i]);

}

return arr;

}

destroyer([1, 2, 3, 1, 2, 3], 2, 3);//输出的就是[1,1],可就是通过不了测试用例

通过调试发现不少原来不知道的东西:

1、return [1,1] === [1,1] 居然返回 false,原来数组与数组是不能直接比较的。很好奇官网测试用例是通过什么方式判断程序是否正确的,是否是先将数组转成字符串再比较,即Array.toSting(),不得而知,如果你知道,欢迎留言。

2、也曾怀疑arr虽然输出为[1,1],但会不会其实是一个字符串,不是一个数组,后来用Array.isArray(arr) 判断为true,证明假想错误。

3、也许你不知道filter函数可以接收的第二个参数是什么,它会将你要传的参数,传给function里的this,这样就可以实现每次function里return的条件不一样。一开始为什么这样写呢,因为没想到用indexOf来解决,但是从思想上来讲,我觉得没错啊。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值