數(shù)組去重
利用對(duì)象屬性不能重復(fù)的特性
Array.prototype.distinct = function () {
console.log(this);
let arrObj = {};
let newArr = [];
for (const key of this) {
if (!(arrObj[key])) {
arrObj[key] = 1;
newArr.push(key);
}
}
console.log(newArr);
return newArr;
};
[1, 2, 5, 3, 6, 1, 2, 6, 9].distinct();
使用遞歸削解,先排序蜓耻,再遞歸比較
Array.prototype.distinct = function () {
let arr = this;
arr.sort(function (a, b) {
return a - b;
});
function loop(index) {
// 判斷到數(shù)組第二個(gè)元素即可停止
if (index >= 1) {
if (arr[index] === arr[index - 1]) {
arr.splice(index, 1);
}
loop(index - 1);
}
}
loop(arr.length - 1);
return arr;
};
console.log([1, 2, 5, 3, 6, 1, 2, 6, 9].distinct());
利用ES6 默認(rèn)的set數(shù)據(jù)結(jié)構(gòu)存哲,類(lèi)似數(shù)組母蛛,但是值是唯一的
function distinct(arr) {
return Array.from(new Set(arr));
};
// 或者和展開(kāi)運(yùn)算符一起使用
function distinct1(arr) {
return [...new Set(arr)];
};
console.log(distinct([1, 2, 5, 3, 6, 1, 2, 6, 9]));
console.log(distinct1([1, 2, 5, 3, 6, 1, 2, 6, 9]));