Js数组去重复(1)递归

开发工具与关键技术:VS2015、Css
作者:曾浩源
撰写时间:2019.2.17

JS数组去重复

比较简单,因为方法有很多,例如:
一、双层循环,外层循环元素,内层循环时比较值,如果有相同的值则跳过,不相同则push进数组。
二、双层循环,外层循环元素,内层循环时比较值,值相同时,则删去这个值。注意点:删除元素之后,需要将数组的长度也减1。

以上两种方法虽然简单易懂,但占用内存高,速度慢
所以就介绍个比较实用的去重复的方法

数组递归去重
先对数组进行从小到大的排序,然后从最后开始比较,遇到相同,则删除
var arr = [1, 2, 3, 4, 5, 6, 5, 3, 2, 4, 56, 4, 1, 2, 1, 1, 1, 1, 1, 1, 56, 45, 56];
var b = distinct(arr);
function distinct(arr) {
	len = arr.length;      //len=23;
	arr.sort(function (a, b) {  //对数组(由小到大)进行排序才能方便比较
		return a - b;
    })
    //排序后aa=[1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 45, 56, 56, 56 ];
    loop(len - 1);  //例如:23-1
    function loop(index) {
        if (index >= 1) {
            if (arr[index] === arr[index - 1]) { //例如:arr[22] === arr[22-1]
                arr.splice(index, 1);
            }
            loop(index - 1); //递归loop函数进行去重
        }
    }
    return arr;
};
console.log(b.toString());  //1,2,3,4,5,6,45,56

猜你喜欢

转载自blog.csdn.net/qq_41657790/article/details/87533140