只想写四个最简单的。
indexOf
Array.prototype.distinct1 = function () {
return this.filter(function (element, index, self) {
console.log(self.indexOf(element), index);
return self.indexOf(element) === index;
});
}
set
Array.prototype.distinct2 = function () {
let set = new Set(this);
return [...set];
}
利用对象的特性
Array.prototype.distinct3 = function () {
let result = [];
let obj = {};
for (let x of this) {
if (!obj[x]) {
obj[x] = x;
result.push(x);
}
}
return result;
}
遍历 (不会产生新的数组)
Array.prototype.distinct4 = function () {
let arr = this;
let i = 0;
//对数组进行去重
for (i = 0; i < arr.length; ++i) {
if (arr[i] === arr[i + 1]) {
arr.splice(i, 1);
//一旦相邻两个元素相等,外层循环的初始值从0开始
i = -1;
}
}
return arr;
}
网友评论