前端手写(八)——数组的扁平化

编程入门 行业动态 更新时间:2024-10-08 22:15:23

前端手写(八)——<a href=https://www.elefans.com/category/jswz/34/1771288.html style=数组的扁平化"/>

前端手写(八)——数组的扁平化

一、写在前面
数组的扁平化一直都是面试中经常出现的问题,所以今天我们总结一下。
二、具体方法
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]

更多推荐

前端手写(八)——数组的扁平化

本文发布于:2024-02-06 04:32:37,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1746405.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   扁平化

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!