{
function createTestArray(){
const testArray=[1,2,3,4,5,'a','b','c','d','e'];
for(let i=0;i<13;i++){
testArray.push(...testArray);
}
testArray.sort((a,b)=>Math.random()>0.5?1:-1);
//console.log(`testArray:${testArray},length:${testArray.length}`);
return testArray;
}
const testArray=createTestArray();
function showTime(fun){
const start=new Date();
const result=fun();
return `name:${fun.name},time:${new Date()-start},result:${result.join(',')}`;
}
function removeRepeatBySet(){
return [...new Set(testArray)];
}
function removeRepeatByFilter(){
return testArray.filter((item,index,arr)=>arr.indexOf(item)==index);
}
function removeRepeatByForof(){
const obj={},arr=[],value={};
for(let i of testArray){
if(obj[i]==value){
continue;
}else if(obj[i]!=value){
obj[i]=value;
arr.push(i);
}
}
return arr;
}
function removeRepeatByFor(){
const obj={},arr=[],value={};
for(let i= 0,len=testArray.length;i
执行10次的执行结果
[
"name:removeRepeatByFilter,time:10,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByFilter,time:10,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByFilter,time:12,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByFilter,time:6,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByFilter,time:7,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByFilter,time:7,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByFilter,time:8,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByFilter,time:9,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByFilter,time:9,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByFilter,time:9,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByFor,time:2,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByFor,time:3,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByFor,time:3,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByFor,time:3,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByFor,time:3,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByFor,time:4,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByFor,time:4,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByFor,time:4,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByFor,time:5,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByFor,time:6,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByForof,time:11,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByForof,time:6,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByForof,time:6,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByForof,time:7,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByForof,time:8,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByForof,time:8,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByForof,time:8,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByForof,time:9,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByForof,time:9,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatByForof,time:9,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatBySet,time:10,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatBySet,time:13,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatBySet,time:16,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatBySet,time:6,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatBySet,time:7,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatBySet,time:7,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatBySet,time:8,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatBySet,time:9,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatBySet,time:9,result:3,5,a,b,1,4,c,2,e,d",
"name:removeRepeatBySet,time:9,result:3,5,a,b,1,4,c,2,e,d"
]
从执行时间上看,for循环是用时最少的,其次for of,filter,而es6的Set用时最长