如何使用JavaScript方式实现数组扁平化
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章给大家分享的是有关如何使用JavaScript方式实现数组扁平化的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、数组扁平化概念数组扁平化是指将一个多维数组变为一维
千家信息网最后更新 2025年01月19日如何使用JavaScript方式实现数组扁平化一、数组扁平化概念
这篇文章给大家分享的是有关如何使用JavaScript方式实现数组扁平化的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一、数组扁平化概念
数组扁平化是指将一个多维数组变为一维数组
[1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5]
二、实现
1. reduce
遍历数组每一项,若值为数组则递归遍历,否则concat
。
function flatten(arr) { return arr.reduce((result, item)=> { return result.concat(Array.isArray(item) ? flatten(item) : item); }, []);}
reduce
是数组的一种方法,它接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。reduce
包含两个参数:回调函数,传给total
的初始值
// 求数组的各项值相加的和: arr.reduce((total, item)=> { // total为之前的计算结果,item为数组的各项值 return total + item;}, 0);
2. toString & split
调用数组的toString
方法,将数组变为字符串然后再用split分割还原为数组
function flatten(arr) { return arr.toString().split(',').map(function(item) { return Number(item); })}
因为split分割后形成的数组的每一项值为字符串,所以需要用一个map方法遍历数组将其每一项转换为数值型
3. join & split
和上面的toString
一样,join
也可以将数组转换为字符串
function flatten(arr) { return arr.join(',').split(',').map(function(item) { return parseInt(item); })}
4. 递归
递归的遍历每一项,若为数组则继续遍历,否则concat
function flatten(arr) { var res = []; arr.map(item => { if(Array.isArray(item)) { res = res.concat(flatten(item)); } else { res.push(item); } }); return res;}
5. 扩展运算符
es6
的扩展运算符能将二维数组变为一维
[].concat(...[1, 2, 3, [4, 5]]); // [1, 2, 3, 4, 5]
根据这个结果我们可以做一个遍历,若arr
中含有数组则使用一次扩展运算符,直至没有为止。
function flatten(arr) { while(arr.some(item=>Array.isArray(item))) { arr = [].concat(...arr); } return arr;}
感谢各位的阅读!关于"如何使用JavaScript方式实现数组扁平化"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
数组
扁平
字符
字符串
方法
运算符
递归
运算
方式
内容
函数
更多
篇文章
结果
一维
不错
实用
两个
参数
数值
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
学习型软件开发的意义
用友服务器已启动连接失败
智还软件开发技术
陕西先通网络技术培训学校
数据库实现核心技术
数据库的封锁的类型
叶网络安全的主要因素有
常德软件开发者
梁溪区信息化软件开发诚信合作
服务器是不是网络终端
计算机网络技术一级目录是什么
长沙天迹网络技术
数据库中有哪些安全问题
hcna网络技术学习指南京东
数据库技术属于编程吗
数据库与信息系统设计体会
服务器管理没有群集
软件开发苦吗
软件开发直播课题
武都软件开发技术
新建县软件开发培训班
服务器也是计算机对不对
三轴运动平台软件开发
阿里云优惠服务器
闵行区手机软件开发流程
服务器内存 品牌
宣扬网络安全的目的
尘香软件开发
启动关闭数据库的bat
软件开发电价