JS:数组扁平化、去重、排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS:数组扁平化、去重、排序相关的知识,希望对你有一定的参考价值。

参考技术A 1、扁平化方法一(toString)
注意:如果arr数组中有空数组,不使用此方法,用下面的方法;同时得到数组的值是字符串,不是数字。

2、扁平化方法二(正则表达式)

3、扁平化方法三(遍历数组)

2、利用indexOf去重

3、利用includes

4、利用filter

1、 排序方法一:(sort方法)

2、排序方法二:(冒泡排序)

参考文件: https://blog.csdn.net/qq_42957741/article/details/103859601
参考文件: https://blog.csdn.net/qq_27626333/article/details/77966760

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

     // 数组的深复制
        // 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);

 

以上是关于JS:数组扁平化、去重、排序的主要内容,如果未能解决你的问题,请参考以下文章

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

js之数组操作

Js数组操作

JavaScript数组 API 实现的几个常见操作

关于ES6的flat(扁平化数组)

JavaScript数组扁平化数组去重常见方法