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