将嵌套数组转换为一维数组
无论是面试中还是实际的开发业务中都会遇到数组包含数组的情况,需要将其转换为一维数组,如下
let deppArr = [1, 2, [3, 4], 5, 6, [7, [8, 9]]]
// 我们希望转换成如下一维数组
let flatArr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
下面提供几种解决思路
使用 reduce
let deppArr = [1, 2, [3, 4], 5, 6, [7, [8, 9]]]
function flatArry(arr) {
return arr.reduce((a, b) => {
if (Array.isArray(b)) {
a.push(...flatArry(b))
} else a.push(b)
return a
}, [])
}
console.log(flatArry(deppArr)) //[1,2,3,4,5,6,7,8,9]
直接使用递归
let deppArr = [1, 2, [3, 4], 5, 6, [7, [8, 9]]]
function flatArry(arr) {
let flat = []
arr.map(element => {
if (Array.isArray(element)) {
flat.push(...flatArry(element))
} else {
flat.push(element)
}
})
return flat
}
console.log(flatArry(deppArr)) //[1,2,3,4,5,6,7,8,9]