js 数组去重常见的几种方式
Posted doublealoe
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 数组去重常见的几种方式相关的知识,希望对你有一定的参考价值。
- 1.利用标记
-
var arr = [2,6,2,6,4,3,16];// arr = [2,6,4,3,16] function norepeat(arr){ var res = []; for(var i=0;i<arr.length;i++){ var flag = true; for(var j=0;j<res.length;j++){ if(arr[i]==res[j]){ flag = false;//将要推入新数组的数组元素 在新数组中有重复 } } if(flag){ res.push(arr[i]); } } return res; } console.log(norepeat(arr));
- 2.indexOf()找对应的下标
-
function norepeat(arr){ var newArr = []; for(var i=0;i<arr.length;i++){ if(newArr.indexOf(arr[i]) == -1){ newArr.push(arr[i]); } } return newArr; } var arr = [1,2,3,5,6,1,2,5]; console.log(norepeat(arr));
- 3.Es5迭代方法filter() +indexOf
-
var arr = [1, 2, 3, 1, 2, 3, 5, 6, 4, 5]; var newArr = arr.filter(function(value, index, array) { console.log(value,index,array); return arr.indexOf(value) == index; }) alert(newArr);
- 4.利用快速排序去重(比较麻烦的一种啦)
-
1 function quickSort(arr) { 2 if(Array.isArray(arr)) { //先判断是不是个数组 3 if(arr.length <= 1) { //设置限定条件 4 return arr; 5 } 6 var left = []; 7 var right = []; 8 var midIndex = Math.floor(arr.length / 2); //找中间索引 9 var midValue = arr.splice(midIndex, 1); //找中间值 10 for(var j = 0; j < arr.length; j++) { 11 if(arr[j] < midValue) { 12 left.push(arr[j]); 13 } 14 if(arr[j] > midValue){ 15 right.push(arr[j]); 16 } 17 } 18 return quickSort(left).concat(midValue, quickSort(right)); //递归直至数组长度为1 19 20 } else { 21 alert(‘请传个数组‘); 22 } 23 } 24 var arr1 = [6, 2, 5, 7, 21, 1,2,5]; 25 console.log(quickSort(arr1));
以上是关于js 数组去重常见的几种方式的主要内容,如果未能解决你的问题,请参考以下文章