代码如下:
function destroyer(arr) {
// Remove all the values
var brr=arguments[0].filter(function(x){
for(var j=1;j
应该怎么改?我想跳出那个循环,待遍历后再输出结果,正确结果应该是显示 [1,1]
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
你这代码写的比较奇怪……我重新写了个,你参考下。
你的逻辑没看懂,不过按你的逻辑,大概你想要的是下面这个结果(
true和false以及中断条件有可能与你本意相反,你自己酌情处理)你的逻辑怪怪的,没看懂
filter理解错误,filter的参数函数接受一个返回值,里面循环第一次返回当然就结束了,filter只是根据当前参数item来返回一个值的功能。还有
arguments都已经是不推荐使用的东西了。如果要做一个从数组里删掉特定项的函数,有无数种方法实现,非要这么复杂和不可读吗?
题主的逻辑是不是“过滤掉第一个数组参数中和后面参数相等的元素”
如果不是,请忽略答案
如果是的话,也就是“过滤掉[1,2,3,1,2,3]中的[2,3]”,
那么分析题主的代码的过滤函数如下:
1-> 1!=2 return true 还应判断1!=3
2-> 2!=2 return false 过滤掉
3-> 3!=2 return true 还应判断1!=3
……
可以发现逻辑是有问题的,都只是和2进行了比较,实际上1、3还需要和3比较才能确定。
应该改为: