一、写在前面
数组的扁平化一直都是面试中经常出现的问题,所以今天我们总结一下。
二、具体方法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]
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_47450807/article/details/123833763
内容来源于网络,如有侵权,请联系作者删除!