1、直接调用flat
flat (arr) {
return arr.flat(Infinity)
},
2、正则表达式匹配
flat1 (arr) {
const str = JSON.stringify(arr)
const reg = /(\[\]))/g
return str.replace(reg, '').split(',')
},
3、递归
flat2 (arr) {
const result = []
const fn = function(ary) {
ary.forEach(item => {
if (item instanceof Array) {
// if (Array.isArray(item)) {
fn(item)
} else {
result.push(item)
}
})
}
fn(arr)
return result
}
4、数组累加器reduce
flat3 (arr) {
return arr.reduce((result, item) => {
return result.concat(Array.isArray(item) ? this.flat3(item) : item)
}, [])
}
5、展开运算符…和while循环
flat4 (arr) {
while (arr.some(Array.isArray)) {
arr = [].concat(...arr)
}
return arr
}