簡單去重比較 複雜資料去重處理

2022-04-03 18:53:23 字數 2956 閱讀 6124

準備測試**:

const arr1 = array.from (new array (100000), (item, index) =>);

const arr2 = array.from (new array (50000), (item, index) =>);

console.log ('開始測試');

const start = new

date().gettime();

distinct(arr1, arr2); // 去重方法

const end = new

date ().gettime ();

console.log ('測試結束');

console.log ('測試時間' + (end - start) / 1000 + 's');

一:filter + indexof

function

distinct(arr1, arr2) );

}

效果:時間11s

二:雙重迴圈,刪除(splice)重複項

function

distinct(a, b)

}}

return

arr}

效果:22s

三、includes + push

function

distinct(arr1, arr2)

return

result;

}

效果:11s

四、先排序(sort),然後比較臨近2個

function

distinct(arr1, arr2) );

const result =;

for (let i = 0, len = arr.length; i < len; i++)

return

result;

}

效果:0.03s

四、使用set

function

distinct(arr1, arr2)

效果:0.04s

五、 for迴圈配合物件使用,然後push, 優缺點,obj中不區分資料型別,導致number和string 值相同會被過濾掉

function

distinct(arr1, arr2) ;

const result =;

for(let i of arr)

} //for (let i = 0; i < len; i++)//}

return

result;

}

效果:0.03s

六、reduce

function

distinct(arr1, arr2)

else

}, );

}

效果:110s

準備資料**

console.log ('開始測試');

const start = new

date().gettime();

const arr =[

, ,,],

},, ,

, ,

];distinct(arr);

const end = new

date().gettime();

console.log('測試結束');

console.log('測試時間' + (end - start) / 1000 + 's');

一、雙重 for迴圈

二、for of 配合obj

三、reduce+obj  和方式二類似

function

distinct(arr) ; //

標識是否存在重複flag

hive 列表去重 Hive 資料去重

實現資料去重有兩種方式 distinct 和 group by 1.distinct消除重複行 distinct支援單列 多列的去重方式。單列去重的方式簡明易懂,即相同值只保留1個。多列的去重則是根據指定的去重的列資訊來進行,即只有所有指定的列資訊都相同,才會被認為是重複的資訊。1 作用於單列 se...

SQL Server 去重處理

asbegin set nocount on 不返回計數,提高處理速度 set xact abort on 如果出錯,會將transcation設定為uncommittable狀態 begin tran declare fn varchar 200 檔名 declare rn int 記錄號 dec...

陣列去重,效率比較

let arr1 array.from new array 100000 x,index let arr2 array.from new array 50000 x,index 寫一下方法中的去重方法 function distinct1 let start new date gettime con...