关键词:ES6,set,Array.from(set),[...set],数组去重
使用Set进行数组去重方法,如下:
const arr = new Set([1,2,3,4,4,5])
[...arr]
// 去重,返回[1,2,3,4,5]
const arr = new Set([1,2,3,4,4,5])
Array.from(arr)
// 去重,返回[1,2,3,4,5]
Set 概述
Set是ES6提供的新的数据结构,它类似于数组。但是它的成员都是独一无二的,没有重复的值。根据它的这个特点,可以用来对数组进行去重操作。可以按照插入的顺序迭代其中的元素。
Set 语法
new Set([iterable])
// 返回一个新的Set对象
其他的数组去重方法
let arr = [1,2,3,4,4,5]
// 1. 只用循环的方式
Array.prototype.unique1 = function () {
let res = [] // 存放去重后的数组
let mark = {} // 用来检测重复的值
for (let i = 0, arrayLen = this.length; i < arrayLen; i++) {
if (!mark[this[i]]) {
res.push(this[i])
mark[this[i]] = true
} else {
console.log(`重复的值是:${this[i]}`)
}
}
return res
}
// 2. 使用indexOf()
Array.prototype.unique2 = function () {
let res = [] // 存放去重后的数组
for (let i = 0, arrayLen = this.length; i < arrayLen; i++) {
// 如果this[i]没有在res中,则push进去
if (res.indexOf(this[i]) === -1) {
res.push(this[i])
}
}
return res
}
// 3. 使用sort()先进行排序,如果当前元素与前一个元素相同,则为重复的元素
Array.prototype.unique3 = function () {
// 存放去重后的数组
// 把目标数组的第一个元素放进去,后面的循环从目标数组的第二个元素开始
let res = [this[0]]
// 在原目标数组的基础上进行排序
this.sort()
for (let i = 1, arrayLen = this.length; i < arrayLen; i++) {
if (this[i] !== this[i-1]) {
res.push(this[i])
}
}
return res
}
arr.unique1() // [1, 2, 3, 4, 5]
arr.unique2() // [1, 2, 3, 4, 5]
arr.unique3() // [1, 2, 3, 4, 5]
—end—