set去重
function unique (arr) {
return Array.from(new Set(arr))
}
indexOf去重
function unique (arr) {
let res = [];
for (let i = 0; i < arr.length; i++) {
if (res.indexOf(arr[i]) === -1) res.push(arr[i]);
}
return res;
}
使用includes
function unique (arr) {
let res = [];
for (let i = 0; i < arr.length; i++) {
if (!res.includes(arr[i])) res.push(arr[i]);
}
return res;
}
sort() 方法去重
function unique (arr) {
arr.sort()
let res = [arr[0]];
for (let i = 1; i < arr.length; i++) {
if (arr[i] !== arr[i-1]) res.push(arr[i]);
}
return res;
}
利用hasOwnProperty()
function unique (arr) {
let obj = {};
return arr.filter(function(item, index, arr){
return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true)
})
}
使用Map
function unique (arr) {
let map = new Map();
let res= [];
for (let i = 0; i < arr.length; i++) {
if (!map.has(arr[i])){
map.set(arr[i], false);
res.push(arr[i]);
}
}
return res;
}
双层for循环+splice
function unique (arr) {
let len = arr.length;
for (let i = 0; i < len; i++) {
for (let j = i + 1; j < len; j++) {
if (arr[i] === arr[j]) {
arr.splice(j, 1);
len--;
j--;
}
}
}
return arr;
}
利用hash表
function unique (arr) {
var n = {},res=[];
for(var i = 0; i < arr.length; i++){
if (!n[arr[i]]){
n[arr[i]] = true;
res.push(arr[i]);
}
}
return res;
}