一、使用Set构造函数
Array.prototype.myUniq = function () {
var _this = this;
_this = Array.from(new Set(_this));
return _this
}
二、indexOf
Array.prototype.myUniq = function () {
var _this = this;
for (var i = 0; i < _this.length; i++) {
var item = _this[i],
arr = _this.slice(i + 1);
if (arr.indexOf(item) > -1) {
_this[i] = _this[_this.length - 1];//将最后一个元素替换当前元素
_this.length--;
i--;
}
}
return _this;
}
三、排序,之后相邻比较
Array.prototype.myUniq = function () {
var _this = this;
_this.sort((a, b) => a - b)
_this = _this.join('@') + '@';
var reg = /(\d+@)\1*/g;
var arr = [];
_this.replace(reg, (value, group) => {
arr.push(parseFloat(group.split('@')[0]))
})
return arr;
}
四、键值对存储
将值以键值对的形式存储,如果已经存储过了说明重复,则删除该项
Array.prototype.myUniq = function () {
var _this = this;
var obj = {}
for (var i = 0; i < _this.length; i++) {
var item = _this[i];
if (obj[item] === undefined) {
obj[item] = item
} else {
_this[i] = _this[_this.length - 1];
_this.length--;
i--;
}
}
return _this;
}