js中使用hash去重,需要建立在對(duì)象的基礎(chǔ)之上洋机,因?yàn)閷?duì)象的存儲(chǔ)采用的是hash表坠宴。
不是自己去寫hash算法 ,js在給對(duì)象添加屬性時(shí)內(nèi)部時(shí)采用了hash算法绷旗,因此可以利用這一特性進(jìn)行數(shù)組去重
/*
* hash去重:不是自己去寫hash算法 利用對(duì)象屬性的添加內(nèi)部應(yīng)用了hash算法
*
* 思路:將元素 作為對(duì)象的屬性進(jìn)行添加 當(dāng)對(duì)象內(nèi)沒有此屬性時(shí) 將此元素作為屬性添加
* 否則不添加
* hash表:線性表+鏈表
* 功能:無論查找還是添加都非诚补模快
*/
arr = [1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, '1', '2'];
result = [];
var hash = {};
//無法識(shí)別 number1和string1
for (var i = 0; i < arr.length; i++) {
if (!hash[arr[i]]) {
result.push(arr[i]);
hash[arr[i]] = 200;
}
}
console.log(result);
console.log( hash);//{1: 200, 2: 200, 3: 200, 4: 200, 5: 200, 6: 200, 7: 200, 8: 200}
console.log('---------------------------------------------');
console.log(typeof 1);
console.log(typeof '1');
arr = [1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, '1', '2'];
result = [];
hash = {};
var type = '';
/**
* 解決無法識(shí)別字符串和number類型的數(shù)據(jù)
*/
for (var i = 0; i < arr.length; i++) {
type = typeof arr[i];
if (!hash[arr[i]+type]) {
result.push(arr[i]);
hash[arr[i]+type] = 200;
}
}
console.log(result);
console.log(hash);//{1number: 200, 2number: 200, 3number: 200, 4number: 200, 5number: 200, …}
————————————————
版權(quán)聲明:本文為CSDN博主「boonyaxnn」的原創(chuàng)文章副砍,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明庄岖。
原文鏈接:https://blog.csdn.net/boonyaxnn/article/details/89486844