数组的深复制、扁平化、排序及去重相关方法

     // 数组的深复制
        // concat
        var arr = [1, 2, 3, 4, 5];
        var arr1 = arr.concat();
        arr[0] = 100;
        console.log(arr)
        console.log(arr1)

        // slice
        var arr = [1, 2, 3, 4, 5];
        var arr1 = arr.slice(0);
        arr[0] = 100;
        console.log(arr)
        console.log(arr1)

        //ES6扩展运算符
        var arr = [1, 2, 3, 4, 5];
        var arr1 = [...arr]
        arr[0] = 100;
        console.log(arr)
        console.log(arr1)

        //for循环
        var arr = [1, [10,20], 3, 4, 5];
        var arr1 = []
        for(var i=0;i<arr.length;i++){
            arr1.push(arr[i])
        }
        arr[0]=100;
        console.log(arr)
        console.log(arr1)
        
        // JSON转换
        var arr = [1, [10,20], 3, 4, 5];
        var arr1=JSON.parse(JSON.stringify(arr));
        arr[1][1]=100;
        console.log(arr)
        console.log(arr1)

        // 数组扁平化
        var arr=[1,2,3,[10,20,[100,200,300]]]
        var arr1=[]
        function arrFlat(arr){
            for(var i=0;i<arr.length;i++){
                if(!arr[i].length){
                    arr1.push(arr[i])
                }else{
                    arrFlat(arr[i])
                }
            }
        }
        arrFlat(arr)
        console.log(arr);
        console.log(arr1);

        // 数组去重--indexOf
        var arr=[1,2,3,4,3,2,1,5,6];
        var arr1=[]
        for(var i=0;i<arr.length;i++){
            if(arr1.indexOf(arr[i])<0){
                arr1.push(arr[i]);
            }
        }
        console.log(arr);
        console.log(arr1);
        
        // 双重循环
        var arr=[1,2,3,4,3,2,1,5,6];
        var arr1=[];
        for(var i=0;i<arr.length;i++){
            var bool=true;
            for(var j=0;j<arr1.length;j++){
                if(arr1[j]==arr[i]){
                    bool=false;
                }
            }
            if(bool){
                arr1.push(arr[i]);
            }
        }
        console.log(arr)
        console.log(arr1)
        
        // 使用deleta实现
        var arr=[1,2,3,4,3,2,1,5,6];
        var arr1=[];
        for(var i=0;i<arr.length;i++){
            if(arr.indexOf(arr[i],i+1)>-1){
                delete arr[i]
            }
        }
        for(var item in arr){
            arr1.push(arr[item])
        }
        console.log(arr)
        console.log(arr1)
        
        // 数组排序sort(a-b为小到大,反之大到小)
        var arr=[1,2,6,13,4,3,11,22,5];
        arr.sort((a,b)=>{
            return a-b
        })
        console.log(arr);
        
        // 选择排序
        var arr=[1,2,10,6,12,33,5,3,4];
        for(var i=0;i<arr.length;i++){
            var checkVal=''
            for(var j=i+1;j<arr.length;j++){
                if(arr[i]>arr[j]){
                    checkVal=arr[i];
                    arr[i]=arr[j];
                    arr[j]=checkVal
                }
            }
        }
        console.log(arr);
        
        // 冒泡排序
        var arr=[15,2,1,6,12,33,5,3,4];
        for(var i=0;i<arr.length;i++){
            var checkVal='';
            for(var j=0;j<arr.length;j++){
                if(arr[j]>arr[j+1]){
                checkVal=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=checkVal
            }
            }
        }
        console.log(arr);
原文地址:https://www.cnblogs.com/Alex-Song/p/12981319.html