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

编写一个函数,它接受两个或多个数组,并以原始提供的数组的顺序返回一个新的惟一值数组。

编写一个函数,它接受两个或多个数组,并以原始提供的数组的顺序返回一个新的惟一值数组。

牧羊人nacy 2019-03-06 14:15:24
我的思路是这样的:将所有传入的数组拼成一个新的数组,再对新数组进行遍历去重,但是出现了如下的问题:    function tick(){        var result=[];        for(var i=0;i<arguments.length;i++){            result=result.concat(arguments[i]);        }        for(var j=0;j<result.length;j++){            var index=-1;            var flag=true;            while(index=(result.indexOf(result[j],index+1))!==-1){                if(flag){                    flag=false;                    continue;                }else{//index会变成true,然后隐式转换成1,不知道怎么解决                    result.splice(index,1);                }            }        }        return result;    }
查看完整描述

2 回答

?
森林海

TA贡献2011条经验 获得超2个赞

应该把
index=(result.indexOf(result[j],index+1))
用括号括起来
不然是把后面的布尔量赋值给index

查看完整回答
反对 回复 2019-03-28
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

逻辑运算符的优先级比赋值运算符高,所以while的条件里是先进行逻辑运算再赋值,所以 index 的值只可能为 true 或者 false,而为 false 时将会退出循环,所以每次读取 index 的值都为 true。


你要的是先赋值再进行逻辑运算,所以改一下循环条件就行了:


while((index=result.indexOf(result[j],index+1)) !== -1) {

  // ...

}


查看完整回答
反对 回复 2019-03-28
  • 2 回答
  • 0 关注
  • 573 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信