1.for循环、includes方式去重
Array.prototype.unique = function () {
let newArr = [];
for (i = 0; i < this.length; i++) {
if (!newArr.includes(this[i])) {
newArr.push(this[i]);
}
}
return newArr;
}
2.reduce循环、includes方式去重
Array.prototype.unique = function () {
return this.reduce((prev, cur) => {
if (!prev.includes(cur)) {
prev.push(cur);
}
return prev;
}, []);
}
3.Set、数组解构方式去重
Array.prototype.unique = function () {
return [...new Set(this)];
}
4.冒泡法对象去重
Array.prototype.unique = function (key) {
for (let i = 0; i < this.length - 1; i++) {
for (let j = i + 1; j < this.length; j++) {
if (this[i][key] == this[j][key]) {
this.splice(j, 1);
j--;
}
}
}
return this;
}
5.新建数据双重循环去重
Array.prototype.unique = function (key) {
let newArr = [];
for (let i = 0; i < this.length; i++) {
if (newArr.every(item => {
return item[key] != this[i][key]
})) {
newArr.push(this[i]);
}
}
return newArr;
}
6.对象法去重
Array.prototype.unique = function (key) {
let obj = {};
return this.reduce((prev, cur) => {
if (!obj[cur[key]]) {
prev.push(cur);
obj[cur[key]] = true;
}
return prev;
}, [])
}
7.of循环、Map方式去重
Array.prototype.unique = function (key) {
let newArr = new Map();
for (let item of this) {
if (!newArr.has(item[key])) {
newArr.set(item[key], item);
}
}
return [...newArr.values()];
}
8.filter循环、Map方式去重
Array.prototype.unique = function (key) {
let newArr = new Map();
return this.filter(item => {
return !newArr.has(item[key]) && newArr.set(item[key], item);
})
}
👋🏻 写在最后
这里可能列举不全,大家还知道其它的去重方式吗?不妨一起探讨下哈。 初来咋到,点个关注吧,持续分享前端技术知识。