Javascipt数组去重
一、利用ES6 Set去重
1 | function unique(arr) {
|
2 | return Array.from(new Set(arr));
|
3 | }
|
二、利用for嵌套for,然后splice去重
1 | function unique(arr) {
|
2 | for (var i = 0; i < arr.length; i++) {
|
3 | for (var j = i + 1; j < arr.length; j++) {
|
4 | if (arr[i] === arr[j]) {
|
5 | arr.splice(j, 1);
|
6 | j--;
|
7 | }
|
8 | }
|
9 | }
|
10 | return arr;
|
11 | }
|
三、利用indexOf去重
1 | function unique(arr) {
|
2 | var array = [];
|
3 | for (var i = 0; i < arr.length; i++) {
|
4 | if (array.indexOf(arr[i]) === -1) {
|
5 | array.push(arr[i]);
|
6 | }
|
7 | }
|
8 | return array;
|
9 | }
|
四、利用sort()
1 | function unique(arr) {
|
2 | arr = arr.sort();
|
3 | var array = [arr[0]];
|
4 | for (var i = 1; i < arr.length; i++) {
|
5 | if (arr[i] !== arr[i - 1]) {
|
6 | array.push(arr[i]);
|
7 | }
|
8 | }
|
9 | return array;
|
10 | }
|
五、利用includes
1 | function unique(arr) {
|
2 | var array = [];
|
3 | for (var i = 0; i < arr.length; i++) {
|
4 | if (!array.includes(arr[i])) {
|
5 | array.push(arr[i]);
|
6 | }
|
7 | }
|
8 | return array;
|
9 | }
|
六、利用filter
1 | function unique(arr) {
|
2 | return arr.filter(function(item, index, arr) {
|
3 | return arr.indexOf(item, 0) === index;
|
4 | });
|
5 | }
|
七、利用递归去重
1 | function unique(arr) {
|
2 | var array = arr;
|
3 | var len = array.length;
|
4 | array.sort(function (a, b) {
|
5 | return a - b;
|
6 | });
|
7 |
|
8 | function loop(index) {
|
9 | if (index >= 1) {
|
10 | if (array[index] === array[index - 1]) {
|
11 | array.splice(index, 1);
|
12 | }
|
13 | loop(index - 1);
|
14 | }
|
15 | }
|
16 |
|
17 | loop(len - 1);
|
18 | return array;
|
19 | }
|
八、利用Map数据结构去重
1 | function unique(arr) {
|
2 | let map = new Map();
|
3 | let array = [];
|
4 | for(let i = 0; i < arr.length; i++) {
|
5 | if(map.has(arr[i])) {
|
6 | map.set(arr[i],true);
|
7 | }else {
|
8 | map.set(arr[i],false);
|
9 | array.push(arr[i]);
|
10 | }
|
11 | }
|
12 | return array;
|
13 | }
|