es6 - new Set()去重--最简洁的方式
function uniqueArr10(array) {
return Array.from(new Set(array));
}
console.log(uniqueArr10(arr));
1. 双for循环去重
var arr = [1, 1, 2, 3, 8, 8, 5, 2, 5, 0, 1, 7, 5, 8, 7, 9, 4, 8, 4, 0];
function uniqueArr(array) {
var _arr = [],
isRepeat;
for (var i = 0; i < array.length; i++) {
isRepeat = false;
for (var j = 0; j < _arr.length; j++) {
if (array[i] == _arr[j]) {
isRepeat = true;
break;
}
}
if (!isRepeat) {
_arr.push(array[i]);
}
}
return _arr;
}
console.log(uniqueArr(arr).sort())
2. 双for循环去重 (这个双for循环比1的效率低)
var arr = [1, 1, 2, 3, 8, 8, 5, 2, 5, 0, 1, 7, 5, 8, 7, 9, 4, 8, 4, 0];
function uniqueArr2(array) {
var _arr = [],
isRepeat;
for (var i = 0; i < array.length; i++) {
isRepeat = false;
for (var j = i + 1; j < array.length; j++) {
if (array[i] == array[j]) {
isRepeat = true;
break;
}
}
if (!isRepeat) {
_arr.push(array[i]);
}
}
return _arr;
}
console.log(uniqueArr2(arr).sort())
3. filter去重
var arr = [1, 1, 2, 3, 8, 8, 5, 2, 5, 0, 1, 7, 5, 8, 7, 9, 4, 8, 4, 0];
function uniqueArr3(array) {
return array.filter(function (item, index) {
return array.indexOf(item) === index;
})
}
console.log(uniqueArr3(arr).sort());
4. forEach去重
var arr = [1, 1, 2, 3, 8, 8, 5, 2, 5, 0, 1, 7, 5, 8, 7, 9, 4, 8, 4, 0];
function uniqueArr4(array) {
var _arr = [];
array.forEach(function (item) {
if (_arr.indexOf(item) === -1) {
_arr.push(item);
}
})
return _arr;
}
console.log(uniqueArr4(arr).sort());
5. sort()+for循环去重
var arr = [1, 1, 2, 3, 8, 8, 5, 2, 5, 0, 1, 7, 5, 8, 7, 9, 4, 8, 4, 0];
function uniqueArr5(array) {
var _arr = [];
array.sort();
for (var i = 0; i < array.length; i++) {
if (array[i] !== _arr[_arr.length - 1]) {
_arr.push(array[i]);
}
if (array[i] !== array[i + 1]) {
_arr.push(array[i]);
}
}
return _arr;
}
console.log(uniqueArr5(arr));
6. es6 - includes()去重
var arr = [1, 1, 2, 3, 8, 8, 5, 2, 5, 0, 1, 7, 5, 8, 7, 9, 4, 8, 4, 0];
function uniqueArr6(array) {
var _arr = [];
array.forEach(function (item) {
if (!_arr.includes(item)) {
_arr.push(item);
}
})
return _arr;
}
console.log(uniqueArr6(arr).sort());
7. es6 - reduce()去重
var arr = [1, 1, 2, 3, 8, 8, 5, 2, 5, 0, 1, 7, 5, 8, 7, 9, 4, 8, 4, 0];
function uniqueArr7(array) {
var _arr = [];
return array.sort().reduce(function (prev, item) {
if (prev.length === 0 || prev[prev.length - 1] !== item) {
prev.push(item);
}
return prev;
}, [])
}
console.log(uniqueArr7(arr));
8. es6 - new Map()去重
var arr = [1, 1, 2, 3, 8, 8, 5, 2, 5, 0, 1, 7, 5, 8, 7, 9, 4, 8, 4, 0];
function uniqueArr8(array) {
var _arr = [],
_temp = new Map();
for (var i = 0; i < array.length; i++) {
if (!_temp.get(array[i])) {
_temp.set(array[i], 1);
_arr.push(array[i]);
}
}
return _arr;
}
console.log(uniqueArr8(arr).sort());
9. {},利用对象的键名不重复特性去重
var arr = [1, 1, 2, 3, 8, 8, 5, 2, 5, 0, 1, 7, 5, 8, 7, 9, 4, 8, 4, 0];
function uniqueArr9(array) {
var _arr = [],
_temp = {};
for (var i = 0; i < array.length; i++) {
if (!_temp[array[i]]) {
_temp[array[i]] = 1;
_arr.push(array[i]);
}
}
return _arr;
}
console.log(uniqueArr9(arr).sort());