javscript 数组扁平化的实现
作者:我们不动 时间:2024-04-28 10:18:49
join toString
该两种方法会将数组元素的类型转换为字符串
var arr = [1, [2, [3, [4, 5]]], 6];
console.log(arr.join()); //1,2,3,4,5,6
console.log(arr.toString()); //1,2,3,4,5,6
var flatArr = arr.join().split(','); // ["1", "2", "3", "4", "5", "6"]
var flatArr = arr.toString().split(',');// ["1", "2", "3", "4", "5", "6"]
缺点: 转换为一维数组后数组元素转换为字符串,需要重新转换数组元素为Number类型
es6 flat
Array.prototype.flat()用于将嵌套的数组“拉平”,变成一维的数组。该方法返回一个新数组,对原数据没有影响
flat()默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。
如果不管有多少层嵌套,都要转成一维数组,可以用Infinity关键字作为参数。
arr.flat(Infinity); // [1, 2, 3, 4, 5, 6]
缺点: flat 方法的兼容需要考虑下
reduce 递归遍历
function flatten(arr) {
return arr.reduce((acc, cur)=> { // 遇到嵌套就递归
return acc.concat(Array.isArray(cur) ?
flatten(cur) : cur);
}, []);
}
console.log(flatten(arr)); // [1, 2, 3, 4, 5, 6]
递归遍历
function flatten(arr) {
while (arr.some(item => Array.isArray(item))) {
arr = [].concat(...arr);
}
return arr;
}
console.log(flatten(arr)); // [1, 2, 3, 4, 5, 6]
来源:https://segmentfault.com/a/1190000021673310
标签:javscript,数组扁平化
0
投稿
猜你喜欢
python通过opencv实现批量剪切图片
2021-05-12 12:50:14
Django学习笔记之View操作指南
2023-05-29 14:08:47
PHP程序员玩转Linux系列 使用supervisor实现守护进程
2023-10-12 14:50:21
vue项目无法删除的问题及解决
2024-05-02 17:08:36
Vue项目之学生管理系统实例详解
2024-04-28 09:31:57
CSS灵活运行注释带来的益处
2008-04-21 13:51:00
nodejs实现简单的gulp打包
2024-05-11 10:16:22
Python使用re模块实现正则表达式操作指南
2022-03-14 18:11:11
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
2023-08-15 05:14:27
pycharm设置python文件模板信息过程图解
2023-03-21 14:46:22
vue中实现可编辑table及其中加入下拉选项
2024-04-10 10:24:51
Python实现的删除重复文件或图片功能示例【去重】
2023-12-25 00:49:07
程序员的七种武器
2008-11-01 17:13:00
对Go语言中的context包源码分析
2024-04-26 17:24:17
Python调用系统命令os.system()和os.popen()的实现
2021-06-27 23:56:29
python字符串格式化方式解析
2021-06-22 14:01:46
python实现多人聊天室
2022-09-02 18:56:21
详解MySql自连接,外连接,内连接 ,左连接,右连接
2024-01-25 05:40:52
python绘制直线的方法
2022-10-08 20:01:52
javascript forEach通用循环遍历方法
2024-04-29 13:19:14