模拟100万数据
/******************************************************************/
随机整数
/******************************************************************/
function MathRandomInt(num){
return (Math.floor(Math.random() * Math.floor(num)));
}
/******************************************************************/
指定大小的随机数组
/******************************************************************/
function arrSize(max){
var i= 0;
var arr = [];
while(i < max){
arr.push(MathRandomInt(100));
i++;
}
return arr;
}
var arr = arrSize(100);
测试1 for循环 + in 运算符 (不是 for…in 循环)
function removeDuplicates(arr){
let obj ={};
var resultArr =[];
for (let index = 0; index < arr.length; index++) {
if(!(arr[index] in obj)){
obj[arr[index]] = 0;
resultArr.push(arr[index]);
}
}
return resultArr;
}
console.log("除重结果1:");
console.time("测试执行速度: ");
console.log(removeDuplicates(arr));
console.timeEnd("测试执行速度: ");
测试2 双层for循环 (太慢了) while …同理。
function removeDuplicates2(arr){
var resultArr =[];
for (let index = 0; index < arr.length; index++) {
let j =0;
for(let i =0;i<arr.length;i++){
if(arr[index] == arr[i]){
j++;
if(j > 1){
delete arr[i];
}
}
}
if(arr[index] != undefined){
resultArr.push(arr[index]);
}
}
return resultArr;
}
console.log("除重结果2:");
console.time("测试执行速度: ");
console.log(removeDuplicates2(arr));
console.timeEnd("测试执行速度: ");
测试3 for循环 + arr.indexof()判断
function removeDuplicates3(arr){
var resultArr =[];
for (let index = 0; index < arr.length; index++) {
if(resultArr.indexOf(arr[index]) === -1){
resultArr.push(arr[index]);
}
}
return resultArr;
}
console.log("除重结果3:");
console.time("测试执行速度: ");
console.log(removeDuplicates3(arr));
console.timeEnd("测试执行速度: ");
测试4 for…in循环 + in 运算符
function removeDuplicates4(arr){
let obj ={};
var resultArr =[];
for (variable in arr) {
if(!(arr[variable] in obj)){
obj[arr[variable]] = 0;
resultArr.push(arr[variable]);
}
}
return resultArr;
}
console.log("除重结果4:");
console.time("测试执行速度: ");
console.log(removeDuplicates4(arr));
console.timeEnd("测试执行速度: ");
测试结果