持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情
高频面试题:数组去重的方法?
例如:
var preArr = [101, 200, 101, 30, 43, 50, 101]
1、利用es6中set数据不重复的特点
var arr = Array.from(new Set(preArr))
2、利用es6中map键值对记录存在状态
var arr = [];
var mapRecord = new Map()
preArr.map(v => {
if (!mapRecord.has(v)) {
arr.push(v);
}
mapRecord.set(v, true)
})
当然这里的mapRecord可以改为熟悉的对象,这里的map遍历可以通过适当的修改改为forEach,for,reduce等常用函数。
3、利用es6中数组的includes方法
var arr = [];
for (let i =0; i < preArr.length; i++) {
!arr.includes(preArr[i]) && arr.push(preArr[i])
}
4、利用对象键值不重复的特点
var arr = []
var obj = {}
for (let i = 0; i < preArr.length; i++) {
obj[preArr[i]] = preArr[i]
}
var arr = Object.values(obj)
5、利用数组索引覆盖的特点
var arr = [];
var indexArr = []
for (let i = 0; i < preArr.length; i++) {
indexArr[preArr[i]] = preArr[i]
}
arr = Object.values(indexArr)
6、利用函数也拥有对象属性的特点
var arr = [];
var fn = function () {};
for (let i = 0; i < preArr.length; i++) {
fn[preArr[i]] = preArr[i]
}
arr = Object.values(fn)