数组项为简单类型
一、利用ES6 Set去重(ES6中最常用)
var arr = [1,1,8,8,12,12,15,15,16,16];
function unique (arr) {
return Array.from(new Set(arr))
}
console.log(unique(arr))
//[1,8,12,15,16]
二、利用indexOf去重
var arr = [1, 1, 8, 8, 12, 12, 15, 15, 16, 16];
function unlink(arr) {
if (!Array.isArray(arr)) {
console.log('错误!')
return
}
var array = [];
for (var i = 0; i < arr.length; i++) { // 首次遍历数组
if (array.indexOf(arr[i]) === -1) { // 判断索引有没有等于
array.push(arr[i])
}
}
return array
}
console.log(unlink(arr));
数组项为复杂类型
一、
function unique(arr) {
let obj = {}
return arr.filter((item, index) => {
// 防止key重复
let newItem = item + JSON.stringify(item)
return obj.hasOwnProperty(newItem) ? false : obj[newItem] = true
})
}
二、
var result = []
var obj = {}
for (var i = 0; i < arr.length; i++) {
if (!obj[arr[i].id]) {
result.push(arr[i])
obj[arr[i].id] = true
}
}
arr = result