数组去重的几种方法
- 利用ES6中的Set集合去重
Array.prototype.unique = function () {
const newArr = Array.from(new Set(this))
return newArr
}
const arr = [true,true,false,1,2,3,4,5,6,1,3,5,6,undefined,undefined]
const newArr = arr.unique()
console.log(newArr)
- 循环,利用splice去重
Array.prototype.unique = function () {
for (let i = 0; i < this.length; i++) {
for (let j = i + 1; j < this.length; j++) {
if(this[i] === this[j]){
this.splice(j,1)
j--
}
}
}
return this;
}
const arr = [true, true, false, 1, 2, 3, 4, 5, 6, 1, 3, 5, 6, undefined, undefined]
const newArr = arr.unique()
console.log(newArr)
- 利用对象的属性不能相同的特点进行去重
Array.prototype.unique = function () {
const obj = {}
const arr = []
for (let i = 0; i < this.length; i++) {
if(!obj[this[i]]){
arr.push(this[i])
obj[this[i]] = i
}else{
obj[this[i]]++
}
}
return arr
}
const arr = [true, true, false, 1, 2, 3, 4, 5, 6, 1, 3, 5, 6, undefined, undefined]
const newArr = arr.unique()
console.log(newArr)
- 利用filter去重
Array.prototype.unique = function () {
return this.filter(function (item, index, arr) {
return arr.indexOf(item) === index;
});
}
const arr = [true, true, false, 1, 2, 3, 4, 5, 6, 1, 3, 5, 6, undefined, undefined]
const newArr = arr.unique()
console.log(newArr)
- 利用sort去重
Array.prototype.unique = function () {
const arr = this.sort()
const arrry = [arr[0]];
for (let i = 1; i < arr.length; i++) {
if (arr[i] !== arr[i - 1]) {
arrry.push(arr[i]);
}
}
return arrry;
}
const arr = [true, true, false, 1, 2, 3, 4, 5, 6, 1, 3, 5, 6, undefined, undefined]
const newArr = arr.unique()
console.log(newArr)