js数组扁平化去重

随记前端面试笔试题:

var arr  = [[1,2,3],[3,4,5,5],[6,7,8,9,[11,12,[12,13,[14]]]],10];
//编写一个程序将数组扁平化并去除其中重复部分数据,最终得到一个升序且不重复的数组

~思路:

function steamroller(arr){
    //新建一个新数组,保存扁平后的数据
    var newArr = [];
    //通过递归去扁平化
    for(var i=0;i<arr.length;i++){
        //判断原数组中的元素是否为数组
        if(Array.isArray(arr[i])){  
            //巧妙利用apply把数组拆分成参数压入新数组中                        
            newArr.push.apply(newArr,steamroller(arr[i]))
        }else{
            newArr.push(arr[i])
             }
        }
        //利用ES6 Set去重(ES6中最常用)
        return  Array.from(new Set(newArr))
    }
    //数组升序
    function sortNumber(a,b){
                return a - b
    }
    console.log(steamroller(arr1).sort(sortNumber))

控制台显示:


Snipaste_2021-02-24_22-45-43.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容