js數組去重的hash方法
更新時間:2016年12月22日 10:38:03 作者:caihg
對于JavaScript數組去除重復項,現在有多種方法,其中一種是hash,本文主要對hash方法去除js數組重復項進行介紹,下面就跟小編一起來看下吧
對于 JavaScript 數組去除重復項,現在有多種方法,其中一種是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;
};
}
但是該方法并不嚴謹,無法區(qū)分數字 1 和 字符串 '1'
var arr = [0, 1, '1', true, 5, true, false, undefined, undefined, null, null]; arr.unique();

修改一下,加上數據類型判斷:
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;
};
}

至少現在對5種原始數據類型的值可以準確去重了,對某些引用類型的值──數組,函數,也可以,但是對象類型──{"name": 1}, {"name": 2}就沒法區(qū)分了。
以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關文章
JavaScript MutationObserver實例講解
MutationObserver用來監(jiān)視DOM變動。DOM的任何變動,比如節(jié)點增減、屬性的變動、文本內容的變動都會觸發(fā)MutationObserver事件,它與事件有一個本質不同:事件是同步觸發(fā),MutationObserver則是異步觸發(fā),DOM的變動并不會馬上觸發(fā),而是要等到當前所有DOM操作都結束才觸發(fā)2022-12-12

