一、利用对象键唯一的特性(也是性能比较高的方法)
let arr = [1, 2, 3, 4, 8, 10, 4, 8, 12] function uniq(arr) { let obj = {} let res = [] for (let i of arr) { if (!obj[i]) { res.push(i) obj[i] = 1 } } return res } console.log(uniq(arr)) //[1, 2, 3, 4, 8, 10, 12]
二、es6的new Set()
let arr = [1,2,3,4,8,10,4,8,12]
let newarr = [...new Set(arr)]
console.log(888,newarr) //[1, 2, 3, 4, 8, 10, 12]
三、filter()(性能最低)
let arr = [1,2,3,4,8,10,4,8,12] let newarr = arr.filter((v,index) => arr.indexOf(v) === index) console.log(888,newarr) //[1, 2, 3, 4, 8, 10, 12]
ps:这3种是比较常见并且写起来比较简洁的,还有很多方法,比如双循环、sort等,个人觉得又绕写的又多,性能也不高,就不做介绍了。
原文:https://www.cnblogs.com/woniubushinide/p/11232420.html