我的思路是这样的:将所有传入的数组拼成一个新的数组,再对新数组进行遍历去重,但是出现了如下的问题: 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贡献1847条经验 获得超11个赞
逻辑运算符的优先级比赋值运算符高,所以while的条件里是先进行逻辑运算再赋值,所以 index 的值只可能为 true 或者 false,而为 false 时将会退出循环,所以每次读取 index 的值都为 true。
你要的是先赋值再进行逻辑运算,所以改一下循环条件就行了:
while((index=result.indexOf(result[j],index+1)) !== -1) {
// ...
}
添加回答
举报
0/150
提交
取消