如何实现数组扁平化?
[1, [2, [3, [4, 5]]], 6] => [ 1, 2, 3, 4, 5, 6 ]
使用 ES6 的 flat 方法
const arr = [1, [2, [3, [4, 5]]], 6]
const flat = arr => {
return arr.flat(Infinity)
}
flat(arr)
使用栈的思想实现 flat 函数
const arr = [1, [2, [3, [4, 5]]], 6]
const flat = arr => {
const result = []
while (arr.length) {
const val = arr.pop()
if (Array.isArray(val)) {
arr.push(...val)
} else {
result.unshift(val)
}
}
return result
}
console.log(flat(arr))
使用正则表达式
const arr = [1, [2, [3, [4, 5]]], 6]
const flat = arr => {
const result = JSON.stringify(arr).replace(/\[|\]/g, '')
return `[${result}]`
}
flat(arr)
使用递归
const arr = [1, [2, [3, [4, 5]]], 6]
const flat = (arr, result = []) => {
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
flat(arr[i], result)
} else {
result.push(arr[i])
}
}
return result
}
console.log(flat(arr))
使用 reduce 方法
const arr = [1, [2, [3, [4, 5]]], 6]
const flat = arr => {
return arr.reduce((pre, cur) => {
return pre.concat(Array.isArray(cur) ? flat(cur) : cur)
}, [])
}
console.log(flat(arr))