数组去重07

数组去重 : js基础高频面试题。 js作者没有封装数组去重的方法。

    var arr = [20,50,60,80,20,50,88];// [20,50,60,80,88]

方式一 : 排序法去重 (最好理解,性能最低)

    //1.对arr排序
    // arr.sort(function(a,b){
    //     return a-b;
    // });
    // console.log(arr);
    // //2.声明空数组存储去重后的数组
    var newArr = [];
    //3.遍历arr, 检查arr[i]  与  arr[i+1]是否一致
    for(var i = 0;i<arr.length;i++){
        if(arr[i] != arr[i+1]){
            //添加到newArr
            newArr.push(arr[i]);
        };
    };
    console.log(newArr);

方式二 : 开关法去重 (不好理解,提现编程思想)

    var arr = [20,50,60,80,20,50,88];// [20,50,60,80,88]

    // //1.声明空数组存储去重后的数组
    // var newArr = [];
    // //2.遍历arr,检查arr[i] 在不在newArr中
    // for(var i = 0;i<arr.length;i++){
    //     //3.开关法:检测arr[i]在不在newArr中
    //     //(1)假设不在 :  true:可以添加  false:不可以添加
    //     var res = true;
    //     //(2)遍历newArr检查
    //     for(var j = 0;j<newArr.length;j++){
    //         if( arr[i] == newArr[j]){//在,不能添加
    //             res = false;
    //             break;
    //         };
    //     };
    //     //(3)通过res值来判断是否添加
    //     if(res){
    //         newArr.push(arr[i]);
    //     };
    // };
    // console.log(newArr);

方式三 : indexOf去重 (好理解,性能好,实际开发常用)

    // var arr = [20,50,60,80,20,50,88];// [20,50,60,80,88]
    // //1.声明空数组存储去重后的数组
    // var newArr = [];
    // //2.遍历arr,检查arr[i]在不在newArr中
    // for(var i = 0;i<arr.length;i++){
    //     //3.  newArr.indexOf() : 检查元素在不在newArr中
    //     if( newArr.indexOf(arr[i]) == -1 ){//不在
    //         newArr.push(arr[i]);
    //     };
    // };
    // console.log(newArr);

方式四 : 对象法去重 (最不好理解,提现所有的js语法精髓。最喜欢看别人用这种方式)

    var arr = [20,50,60,80,20,50,88];// [20,50,60,80,88]

    /*对象法去重核心思路 : 对象的属性名不能重复 
        * 将数组的元素作为对象的属性名  { "20" : 1 }
    */

    var obj = {};//检测是否有重复元素
    var newArr = [];//存储去重后的数组

    for(var i = 0;i<arr.length;i++){
        //将数组元素作为对象属性名
        if(obj[ arr[i] ] == undefined){//没有重复
            newArr.push(arr[i]);
            obj[ arr[i] ] = 1;//下一次再出现重复元素,不会是undefined
        };
    };

    console.log(newArr);

猜你喜欢

转载自blog.csdn.net/cxy9999999/article/details/106650387