面试常问的数组去重方法
方法一: 利用 indexOf , 返回的是第一个满足值的元素下标,没有的就返回 -1
function deduplication(arr) {
var Arrary = new Array()
for (let i = 0; i < arr.length; i++) {
if (Arrary.indexOf(arr[i]) == -1) {
Arrary.push(arr[i])
}
}
return Arrary
}
方法二:利用 includes 方法
function deduplication(arr) {
let arrary = []
for (let i = 0; i < arr.length; i++) {
if (!arrary.includes(arr[i])) arrary.push(arr[i])
}
return arrary
}
方法三:利用 set 方法
function deduplication(arr) {
const set = new Set(arr)
return [...set]
}
方法四:利用数组的 filter + indexOf 方法
function deduplication(arr) {
const array = arr.filter((item, index) => {
return arr.indexOf(item) === index
})
return array
}
方法五: sort + splice 方法
function deduplication(arr) {
arr.sort((a, b) => a - b)
for (let i = 0; i < arr.length; i++) {
if (arr[i] === arr[i + 1]) {
arr.splice(i, 1)
i = i - 1
}
}
return arr
}
方法六: 利用对象不同存相同属性名的方法
function deduplication(arr) {
const obj = {}
const arrary = []
for (let item of arr) {
if (!obj[item]) {
obj[item] = true
arrary.push(item)
}
}
return arrary
}