数组扁平化

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

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

let arr = [[1,2,3],[3,4,5,5],[6,7,8,9,[11,12,[12,12,[14]]]],10]

方法一:使用ES6中提供的Array.flat处理

1
2
3
4
let arr = [[1,2,3],[3,4,5,5],[6,7,8,9,[11,12,[12,12,[14]]]],10]
    res = arr.flat(Infinity)//使用ES6中提供的Array.prototype.flat处理
    res = [...new Set(res)].sort((a,b) => a-b)//基于ES6中的new Set()数组去重
console.log(res)

方法二:把数组直接变成字符串(数组toString()后,不管你有多少级,最后都很好变为以逗号分隔的字符串,没有中括号和所谓的层级了),相当于直接扁平化了

1
2
3
4
5
6
let arr = [[1,2,3],[3,4,5,5],[6,7,8,9,[11,12,[12,12,[14]]]],10]
    let res = arr.toString().split(',').map(item => {
        return Number(item)
    })
    res = [...new Set(res)].sort((a,b) => a-b)//基于ES6中的new Set()数组去重
console.log(res)

方法三:JSON.stringify可以把对象或数组转换为一个JSON字符串,然后通过正则表达式的方法去掉 ‘[’ 和 ‘]’

1
2
3
4
5
6
7
let arr = [[1,2,3],[3,4,5,5],[6,7,8,9,[11,12,[12,12,[14]]]],10]
    let res = JSON.stringify(arr)//得到一个JSON字符串
        res = res.replace(/(\[|\])/g,'').split(',').map(item => {
        return Number(item)
    })
    res = [...new Set(res)].sort((a,b) => a-b)//基于ES6中的new Set()数组去重
console.log(res)

方法四:基于数组的some()方法进行判断检测:验证数组中某一项有没有符合函数中提供的规则的(some()和find()方法相似,两者的区别是:some返回的是Boolean,find找到符合规则的,返回当前这一项,没找到符合规则的,返回undefined)



-->