编写一个程序,将数组扁平化,并去除其中重复部分数据,最终得到一个升序且不重复的数组
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)