js數(shù)組去重的hash方法
對于 JavaScript 數(shù)組去除重復(fù)項(xiàng),現(xiàn)在有多種方法,其中一種是hash,如下:
if (!Array.prototype.unique) {
Array.prototype.unique = function () {
var hash = {}, result = [], item;
for (var i = 0; i < this.length; i++) {
item = this[i];
if ( !hash[item] ) {
hash[item] = true;
result.push(item);
}
}
return result;
};
}
但是該方法并不嚴(yán)謹(jǐn),無法區(qū)分?jǐn)?shù)字 1 和 字符串 '1'
var arr = [0, 1, '1', true, 5, true, false, undefined, undefined, null, null]; arr.unique();

修改一下,加上數(shù)據(jù)類型判斷:
if (!Array.prototype.unique) {
Array.prototype.unique = function () {
var hash = {}, result = [], type = '', item;
for (var i = 0; i < this.length; i++) {
item = this[i];
type = Object.prototype.toString.call(item);
if ( !hash[item + type] ) {
hash[item + type] = true;
result.push(item);
}
}
return result;
};
}

至少現(xiàn)在對5種原始數(shù)據(jù)類型的值可以準(zhǔn)確去重了,對某些引用類型的值──數(shù)組,函數(shù),也可以,但是對象類型──{"name": 1}, {"name": 2}就沒法區(qū)分了。
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
javascript 最常用的10個(gè)自定義函數(shù)[推薦]
如果不使用類庫或者沒有自己的類庫,儲備一些常用函數(shù)總是有好處的。2009-12-12
關(guān)于foreach循環(huán)中遇到的問題小結(jié)
這篇文章主要介紹了關(guān)于foreach循環(huán)中遇到的問題總結(jié),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-05-05
javascript拖曳互換div的位置實(shí)現(xiàn)示例
一個(gè)div拖動互換位置的demo,還有很大優(yōu)化的空間,利用dom元素的dragstart/ondragover/ondrop事件完成,感興趣的可以了解一下2021-06-06
原生JavaScript實(shí)現(xiàn)九宮格抽獎
這篇文章主要為大家詳細(xì)介紹了原生JavaScript實(shí)現(xiàn)九宮格抽獎,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
JavaScript MutationObserver實(shí)例講解
MutationObserver用來監(jiān)視DOM變動。DOM的任何變動,比如節(jié)點(diǎn)增減、屬性的變動、文本內(nèi)容的變動都會觸發(fā)MutationObserver事件,它與事件有一個(gè)本質(zhì)不同:事件是同步觸發(fā),MutationObserver則是異步觸發(fā),DOM的變動并不會馬上觸發(fā),而是要等到當(dāng)前所有DOM操作都結(jié)束才觸發(fā)2022-12-12
Javascript 顏色漸變效果的實(shí)現(xiàn)代碼
在搭建博主博客的時(shí)候,尋思著做一些效果,看到菜單,就想是不是可以做一下顏色的漸變,增加一點(diǎn)動態(tài)的感覺。有個(gè)jquery的插件,效果相當(dāng)不錯(cuò),不過博主還是打算自立更生寫一下,看看能不能實(shí)現(xiàn)2013-10-10

