数组去重
const readyArr = [1, 1, 2, 2, 3, 3, 5, 3, 7, 0, 4, 41, 45, 44, 3];
1. for 循环
1.1 借助中间数组循环
function uniqueArr(arr) {
let _arr = [],
isRepeat;
for (let i = 0; i < arr.length; i++) {
isRepeat = false;
for (let j = 0; j < _arr.length; j++) {
if (_arr[j] == arr[i]) {
isRepeat = true;
break;
}
}
if (!isRepeat) {
_arr.push(arr[i]);
}
}
return _arr;
}
console.log(
uniqueArr(readyArr).sort(function (a, b) {
return a - b;
})
);
1.2 对比本身进行排序(比较慢,时间复杂度高)
function uniqueArr(arr) {
let _arr = [],
isRepeat;
for (let i = 0; i < arr.length; i++) {
isRepeat = false;
for (let j = i + 1; j < arr.length; j++) {
if (arr[j] == arr[i]) {
isRepeat = true;
break;
}
}
if (!isRepeat) {
_arr.push(arr[i]);
}
}
return _arr;
}
console.log(
uniqueArr(readyArr).sort(function (a, b) {
return a - b;
})
);
2.filter
function uniqueFilter(arr) {
return arr.filter(function (item, index) {
return arr.indexOf(item) === index;
});
}
3.forEach
function uniqueForEach(arr) {
var _arr = [];
arr.forEach(function (item) {
if (_arr.indexOf(item === -1)) {
_arr.push(item);
}
});
return _arr;
}
4.sort
4.1 sort
function uniqueSort(arr) {
var _arr = [];
arr.sort();
for (var i = 0; i < arr.length; i++) {
if (arr[i] !== arr[i + 1]) {
_arr.push(arr[i]);
}
}
return _arr;
}
4.2 sort
function uniqueSort(arr) {
var _arr = [];
arr.sort();
for (var i = 0; i < arr.length; i++) {
if (arr[i] !== _arr[_arr.length - 1]) {
_arr.push(arr[i]);
}
}
return _arr;
}
5. es6 includes
function uniqueIncludes(arr) {
var _arr = [];
arr.forEach(function (item) {
if (!_arr.includes(item)) {
_arr.push(item);
}
});
return _arr;
}
6. sort + reduce
function uniqueReduce(arr) {
var _arr = [];
return arr.sort().reduce(function (prev, elements) {
if (prev.length === 0 || prev[prev.length - 1] !== elements) {
prev.push(elements);
}
return prev;
}, []);
return _arr;
}
7. Map 对象
function uniqueMap(arr) {
var _arr = [],
_temp = new Map();
for (let i = 0; i < arr.length; i++) {
if (!_temp.get(arr[i])) {
_temp.set(arr[i], 1);
_arr.push(arr[i]);
}
}
return _arr;
}
8. set
function uniqueSet(arr) {
return Array.from(new Set(arr));
}