新建乙個陣列,遍歷去要重的陣列,當值不在新陣列的時候(indexof為-1)就加入該新陣列中。
//方法1:普通版,利用indexof去重
function arrayunique(arr)
}return res;
}var arr = [1, 1, 'hi', 'true', 'true', true, 15, 15, 15];
console.log(arrayunique(arr)); //[ 1, 'hi', 'true', true, 15 ]
建立乙個空map資料結構,遍歷需要去重的陣列,把陣列的每乙個元素作為key存到map中。由於map中不會出現相同的key值,所以最終得到的就是去重後的結果。
map是es6 提供的新的資料結構。
map 物件儲存鍵值對。任何值(物件或者原始值) 都可以作為乙個鍵或乙個值。以下是map物件的方法:
// 方法2:hashmap
function arrayunique2(arr)
}return res;
}var arr = [1, 1, 'hi', 'true', 'true', true, 15, 15, 15];
console.log(arrayunique2(arr)); //[ 1, 'hi', 'true', true, 15 ]
array.from( set物件 ) 可以把set轉成陣列。
es6 新增了set這一資料結構,類似於陣列,區別在於它所有的成員都是唯一的,不能有重複的值
語法:
array.from(arraylike[, mapfn[, thisarg]])
示例**:
//方法3:使用 set 進行陣列去重
// 使用 set 完成 陣列去重,只能去除字串和數字的重複,不能去除物件的重複
function uniqueset(array)
//或function uniqueset2(array)
var arr = [1, 1, 'hi', 'true', 'true', true, 15, 15, 15];
console.log(uniqueset(arr)); //[ 1, 'hi', 'true', true, 15 ]
將兩個陣列拼接為乙個陣列,然後使用 es6 中的 array.filter() 遍歷陣列,並結合 indexof 來排除重複項。
array.filter(function(currentvalue,index,arr), thisvalue)
引數說明:
array.indexof(item,start)
引數
描述item
必須。查詢的元素。
start
可選的整數引數。規定在陣列中開始檢索的位置。它的合法取值是 0 到 stringobject.length - 1。如省略該引數,則將從字串的首字元開始檢索。
// 方法4:使用 filter
function uniquefilter(arr) );
return res;
}var arr = [1, 1, 'hi', 'true', 'true', true, 15, 15, 15];
console.log(uniquefilter(arr)); //[ 1, 'hi', 'true', true, 15 ]
// 方法5:原型方法
array.prototype.unique = function ()
});return newarray;}
// 方法6:精簡版 使用 filter 和 indexof 結合實現
array.prototype.unique = function () )
}
js陣列去重的兩種方法
陣列去重這種問題經常會遇到,解決方法也有很多,這裡就總結兩種比較常用的方法。方法一第一種方法的思路 遍歷陣列裡的元素,由第乙個元素開始依次按照順序與其後面的元素相比較,如果不同則不用管,相同則把其後所被比較的元素去除。這樣所有元素迴圈一遍,陣列中重複的元素就能全部去除。var arr 1,5,7,6...
js 陣列去重多種方法
var arr 1,2,3,2,1,2,1,34,44 方法一 利用jquery unique var newarr unique arr 方法二 利用indexof去重 var newarr for var i 0 i if newarr.indexof arr i 1 return newarr...
兩種陣列去重的方法
1 this的用法 思路 構建乙個空陣列存放結構 構建乙個空物件,巧妙之處 將取得的原陣列的值設為物件的屬性,並設定其值為乙個數值,for迴圈時,如果該值存在則 json this i 為false,array.prototype.unique3 function for var i 0 i thi...