数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组

54 阅读1分钟

据说这是一道美团面试撸代码题目,我花一会功夫实现了,还可以

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

function fx(arr){
    
    var a=[]
    f(arr,a)

    let set=new Set(a)

    let re=Array.from(set)
    // console.log(re)
    console.log(re.sort((a,b)=>{return a-b}))

}
//递归数组,push到a里
function f(arr,a){
//数组类型再次递归
    if(arr instanceof Array){
        arr.forEach(e=>{
            f(e,a)
        })
 //非数组类型,即某一数组元素,直接push
    }else {
        a.push(arr)
    }


}
var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
fx(arr)

我感觉这个递归方法有点动态规划的影子