数组扁平化
ES6中的flat
- 对原数组没有影响
- 默认为平摊成一层
- flat参数若为整数,表示想要拉平的层数
- 若参数为Infinity,表示不管数组嵌套多少层,最终都摊成一层
- 如果原数组中存在空值,flat会直接跳过
const arr = [[1,2,3],[4],[5,6,[7,[8]]]]
let arr1 = arr.flat()
正则表达式
let arr2 = `[${JSON.stringify(arr).replace(/(\[|\])/g,"")}]`
使用reduce
遍历数组中的每一个元素,如果是数组就再次进行遍历,反之concat
function flat(arr) {
return arr.reduce((pre, cur) => {
return pre.concat(Array.isArray(cur) ? flat(cur) : cur)
}, [])
}