分享一道简单的算法题,主要是为了督促自己学习

56 阅读1分钟

题目如下

已知如下数组:

const arr = [[1,1,3,5],[5,8,2,4],[5,[6,2,8],[3,5,4,11,[9,6,15,11],13,12],11],10]

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

我的解题方法

// 首先声明一个空数组,用于储存扁平化的数据
let totalArr = []
//用了递归来扁平化数据
function fn(a) {
    if(Array.isArray(a)){
        for(let i = 0; i < a.length; i++){
            fn(a[i]) 
        }
    }else {
        totalArr.push(a)
    }
}

fn(arr)
// 去重然后排序
endArr = [...new Set(totalArr)].sort((a,b) => a-b)
console.log(...endArr) // 1 2 3 4 5 6 8 9 10 11 12 13 15