// 1.利用 Set 和 Array.from 方法
let arr = [0, 1, 2, 3, 2, 1, 0, 4];
let newArr = Array.from(new Set(arr)); // newArr = [0, 1, 2, 3, 4]
// 2.利用两层循环和数组的 splice 方法
let arr = [0, 1, 2, 3, 2, 1, 0, 4];
for (let i = arr.length - 1; i >=0; i–) {
for (let j = i - 1; j >=0; j–) {
if (arr[i] === arr[j]) {
arr.splice(i ,1);
break;
}
}
} // arr = [0 ,1 ,2 ,3 ,4]
//3.利用数组的 indexOf 或 includes 方法
let arr = [0 ,1 ,2 ,3 ,2 ,1 ,0 ,4];
let newArr = [];
for (let item of arr) {
if (newArr.indexOf(item) === -1) { // 或者 newArr.includes(item) === false
newArr.push(item);
}
} // newArr = [0 ,1 ,2 ,3 ,4]
//4.利用数组的 filter 和 indexOf 方法
let arr = [0 ,1 ,2 ,3 ,2 ,1 ,0 ,4];
let newArr = arr.filter((item,index) => {
return arr.indexOf(item) === index;
}); // newArr = [0 ,1 ,2 ,3 ,4]
//5.利用 Map 或对象
let arr = [0 ,-0 ,‘a’ ,‘a’ ,‘b’ ,‘b’ ,‘c’ ,‘c’];
let mapObj= new Map();
arr.forEach((item,index)=>{
mapObj.set(item,index);
});
console.log(mapObj); // Map(5) { ‘a’ => ‘a’, ‘b’ => ‘b’, ‘c’ => ‘c’, -0 => -0 }
console.log([…mapObj.keys()]); // [“a”, “b”, “c”, -0]