es6判断一个数组中是否有重复的元素

时间:2017.10.28 发布人:adssij

es6判断一个数组中是否有重复的元素

已解决问题

谷歌adssij用户在2017.10.28提交了关于“宗庆后es6判断一个数组中是否有重复的元素”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-26T23:57:15。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,不知道说什么,送你一朵小红花吧 !

希望以下的回答,能够帮助你。

第1个回答

用户名:gu来自iysvo8640  

方法:

无需思考,我们可以得到O(n^2)复杂度的解法。定义一个变量数组res保存结果,遍历需要去重的数组,如果该元素已经存口止乙哪井原美节养在在res中了,则说明是重复的元素,如果没有,则放入res中。

functionunique(a){
varres=[];

for(vari=0,len=a.length;i<len;i++){
varitem=a[i];

for(varj=0,jLen=res.length;j<jLen;j++){
if(res[j]===item)
bre**;
}

if(j===jLen测安汉来因族呼)
res.push(item);
}

returnres;
}

vara=[1,1,'1','2',1];
varans=unique(a);
console.log(红日ans);//=>[1,"1","2"]

代码非常简单,那么是否能更简洁些?如果不考虑浏览器兼容,我们可以用ES5提供的Array.prototype.indexOf方法来简化代码。

functionunique(a){
varres=[];

for(vari=0,l树负致振值en=a.length;i<len;i++){
varitem=a[i];

(res.indexOf(item)===-1)&&res.push(item);
}

returnres;
}

vara=[1,1,'1','2',1];
varans=uniqu先e(a);
console.log(ans);//孔守形书好基=>[1,"1","2"]

既然深纪序定候用了indexOf,那么不妨再加上filter。

functionun带升市但会甚地该来展应ique(a){

varres=a.filter(function(item,index,array){
r最时货针导功答识eturnarray.indexOf(item)===index;
});

returnre志般s;
}

vara=[1,1,'1','2',1];
var万定井队胶ans=unique(a);
console.log(ans);//=>[1,"1","2"]