js怎样实现数组的扁平化
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,js怎样实现数组的扁平化,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。数组扁平化的方式什么是数组扁平化?数组扁平化:指将一个多维数组
千家信息网最后更新 2025年01月19日js怎样实现数组的扁平化
js怎样实现数组的扁平化,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
数组扁平化的方式
什么是数组扁平化?
数组扁平化:指将一个多维数组转化为一个一维数组。
例:将下面数组扁平化处理。
const arr = [1, [2, 3, [4, 5]]] // ---> [ 1, 2, 3, 4, 5 ]
1.使用flat()
flat() 方法是ES10提出的,它会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。(flat意为"水平的;平坦的")
const result1 = arr.flat(Infinity) // 指定深度为无限console.log(result1) // [ 1, 2, 3, 4, 5 ]const result2 = arr.flat(1) // 指定深度为1console.log(result2) // [ 1, 2, 3, [ 4, 5 ] ]const result3 = arr.flat(2) // 指定深度为2console.log(result3) // [ 1, 2, 3, 4, 5 ]
2.使用正则
以下做法得到的数组元素都会变成字符串,不建议使用;
const result1 = JSON.stringify(arr).replace(/\[|\]/g, '').split(',')console.log(result1) // [ '1', '2', '3', '4', '5' ] 数组元素都变成了字符串
对以上方法进行优化处理;
const result2 = JSON.parse('[' + JSON.stringify(arr).replace(/\[|\]/g, '') + ']')console.log(result2) // [ 1, 2, 3, 4, 5 ]
3.使用reduce()+concat()
使用reduce拿到数组的当前值和前一项值,判断当前值是否为数组,初始值设置为[],然后使用concat进行数组合并。
reduce()方法:对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
concat()方法:用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
function flatten(arr) { return arr.reduce((pre, current) => { return pre.concat(Array.isArray(current) ? flatten(current) : current) }, [])}const result = flatten(arr)console.log(result) // [ 1, 2, 3, 4, 5 ]
4.使用函数递归
循环遍历数组,发现含有数组元素就进行递归处理,最终将数组转为一维数组。
const result = []function exec(arr) { arr.forEach(item => { if (Array.isArray(item)) { exec(item) } else { result.push(item) } })}exec(arr)console.log(result) // [ 1, 2, 3, 4, 5 ]
5.使用扩展运算符+concat()
ES6新推出的扩展运算符能对数组进行降维处理(一次降一维),循环判断是否含有数组,进行concat合并。
some()方法:测试数组中是不是至少有1个元素通过了被提供的函数测试(它返回的是一个Boolean类型的值)。
function flatten(arr) { while (arr.some(item => Array.isArray(item))) { arr = [].concat(...arr) } return arr}const result = flatten(arr)console.log(result) // [ 1, 2, 3, 4, 5 ]
关于js怎样实现数组的扁平化问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
数组
元素
扁平
方法
深度
处理
函数
问题
一维
递归
字符
字符串
更多
运算符
帮助
循环
测试
解答
运算
平坦
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
联想服务器 重装系统
保定麦嘉网络技术有限公司官方
延安市软件开发推荐
数据库技术支持服务方案
海康威视软件开发实习
智能停车场的网络技术
济南 云服务器
im本地数据库需要加密吗
r740服务器启动项
福建软件开发公司排名
网络安全助手在哪个文件夹
电子科大网络安全素养
软件开发利用专业
特朗普退出网络安全
计算机网络技术的内容分类
移动互联应用软件开发国赛
国家网络安全观感300字
湖南信融网络技术有限公司
江西配电服务器机柜虚拟主机
geo数据库介绍及下载指南
单位怎么注重网络安全
4g网卡如何做服务器
成都起微网络技术有限公司
网络安全征集活动绘画
网络安全测试高手联系方式
奉化直销软件开发外包
2018网络安全举报
远程服务器任务管理器
网络安全法规定中国联通
数据库持久层代码错误