实现数组去重的常用方法
1.利用Set的特性进行去重
1 function unique(arr) {
2 return Array.from(new Set(arr));
3 }
2.利用数组的reduce方法进行去重
1 function unique(arr) {
2 return arr.reduce((accumulator, currentValue) => accumulator.includes(currentValue) ? accumulator : [...accumulator, currentValue], []);
3 }
3.利用数组的indexOf方法进行去重
1 function unique(arr) {
2 let res = [];
3 for (let i = 0; i < arr.length; i++) {
4 if (res.indexOf(arr[i]) === -1) {
5 res.push(arr[i]);
6 }
7 }
8
9 return res;
10 }
4.利用数组的sort方法进行去重
1 function unique(arr) {
2 let res = [];
3 if (arr.length < 1) {
4 return res;
5 }
6
7 arr.sort(); res.push(arr[0]);
8 for (let i = 1; i < arr.length; i++) {
9 if (arr[i] !== arr[i-1]) {
10 res.push(arr[i]);
11 }
12 }
13
14 return res;
15 }
5.利用map的特性进行去重
1 function unique(arr) {
2 let res = [], map = new Map();
3 for (let i = 0; i < arr.length; i++) {
4 if (!map.has(arr[i])) {
5 res.push(arr[i]);
6 map.set(arr[i], 1);
7 } else {
8 map.set(arr[i], map.get(arr[i]) + 1);
9 }
10 }
11
12 return res;
13 }
6.利用数组的filter方法进行去重
1 function unique(arr) {
2 return arr.filter((currentValue, currentIndex) => {
3 return arr.indexOf(currentValue) === currentIndex;
4 })
5 }