数组的扁平化"/>
前端手写(八)——数组的扁平化
一、写在前面
数组的扁平化一直都是面试中经常出现的问题,所以今天我们总结一下。
二、具体方法
2.1、采用flat
const arr = [1, [2, [3, [4, 5]]], 6];const res = arr.flat(Infinity)
console.log(res)
flat
中如果不传入任何参数的话,此时默认值为1,此时则表明扁平化的层数为一层。我们传入Infinity
,则表示正无穷。
2.2、正则表达式
const arr = [1, [2, [3, [4, 5]]], 6];let res = JSON.stringify(arr).replace(/\[|\]/g, '').split(',').map(item => item * 1)
console.log(res) //[1,2,3,4,5,6]
2.3、正则表达式改良
const arr = [1, [2, [3, [4, 5]]], 6];let res = JSON.parse('[' + JSON.stringify(arr).replace(/\[|\]/g, '') + ']')
console.log(res) //[1,2,3,4,5,6]
2.4、使用reduce来解决
const arr = [1, [2, [3, [4, 5]]], 6];function flatArray(array) {return array.reduce((pre, next) => {return pre.concat(Array.isArray(next) ? flatArray(next) : next)}, [])
}
let res = flatArray(arr)
console.log(res) //[1,2,3,4,5,6]
2.5、使用递归
const arr = [1, [2, [3, [4, 5]]], 6];function func(array) {let newArr = []const rec = (arr) => {arr.forEach(item => {if (!Array.isArray(item)) {newArr.push(item)} else {rec(item)}})}rec(array)return newArr
}
let res = func(arr)
console.log(res) //[1,2,3,4,5,6]
更多推荐
前端手写(八)——数组的扁平化
发布评论