定義一個數(shù)組arr = [1,5,3,4,5,6,7,8,8,9,1,2,3,4,88,77,12,1,2],針對該數(shù)組進(jìn)行去重
1京腥、常規(guī)去重
has函數(shù)的作用是判斷array數(shù)組中是否存在元素value值
norepeat函數(shù)是根據(jù)has函數(shù)鲸郊,判斷該元素是否存在丰榴,不存在則加入新數(shù)組中,從而實現(xiàn)元素去重
2秆撮、通過數(shù)組的ES5中新增的API去重
(1)array.forEach(callback)
遍歷迭代數(shù)組中的每個元素四濒,在迭代到每個元素時,都去調(diào)用 callback 函數(shù)執(zhí)行职辨。
callback 是一個函數(shù)盗蟆,該函數(shù)結(jié)構(gòu):
function(currentValue, index, array) {}
-- currentValue 是當(dāng)前遍歷到的元素值
-- index 是當(dāng)前遍歷到元素在數(shù)組中的下標(biāo)
-- array 是調(diào)用 forEach() 方法的數(shù)組對象
(2)array.indexOf(search[, fromIndex = 0])
查找 search 值在數(shù)組 array 中第一次出現(xiàn)的下標(biāo),如果存在則返回大于等于0的值舒裤,如果不存在喳资,則固定返回 -1。也可以指明從指定的索引 fromIndex 處開始查找腾供,如果未指定 fromIndex 則默認(rèn)從下標(biāo)0位置開始查找仆邓。
3、通過Set函數(shù)和數(shù)組API去重
(1)ES6中新增Set集合
用于存儲各類型的唯一值伴鳖,通常我們認(rèn)為 Set 集合中的元素是無序的
創(chuàng)建:new Set();
Set.add() -- 添加节值,保存元素
注意點(diǎn):通過Set函數(shù)只能得到一個類數(shù)組,而非數(shù)組榜聂;可以通過Array.from()將類數(shù)組對象轉(zhuǎn)換為數(shù)組對象
4察署、直接通過Set函數(shù)去重
前面提到Set集合是用于存儲各類型的唯一值,所以對于相同的數(shù)據(jù)峻汉,Set函數(shù)可以直接用于去重
由于Set函數(shù)得到的是一個類數(shù)組對象贴汪,所以需要轉(zhuǎn)換成數(shù)組的時候脐往,可以這樣寫