如何使用JavaScript方式实现数组扁平化
发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,这篇文章给大家分享的是有关如何使用JavaScript方式实现数组扁平化的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、数组扁平化概念数组扁平化是指将一个多维数组变为一维
千家信息网最后更新 2024年11月11日如何使用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安全错误
数据库的锁怎样保障安全
互联网是现代科技吗
软件开发工具排行
通信网络技术专业知识
上海做软件开发的工资水平
oracle数据库登陆
东南大学网络安全2022考研
奥迪电梯控制系统和网络技术
网络安全身份认证系统论文
上海宿代互联网科技公司
宽带dns服务器不可用怎么回事
网络安全事件范围
查询数据库有什么表的语句
网络安全团日感想
泉州直播软件开发搭建
不是引发网络安全问题
服务器操作系统下载网站
风电场网络安全监测装置的作用
郑州开设软件开发的大学
北京轻松筹网络技术有限公司
济宁党建设计软件开发哪儿好
网站后台数据库管理
xboxone怎么切登录服务器
软件开发 建筑工程
数据库安全措施优缺点
辽宁单机版外贸软件开发
最科技互联网程序员亮薪
安全防护网数据库
软件开发外包厂家
万方数据库发表文章多少钱
软件开发 集成 合同