js实现数组的扁平化处理
时间:2019-12-07
本文章向大家介绍js实现数组的扁平化处理,主要包括js实现数组的扁平化处理使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
方法多多,第一种方法是我在字节面试的时候,要我现场写出来的,记忆深刻
Method 1:array.reduce实现
1 function flatten(arr = []) { 2 return arr.reduce((a, b) => { 3 if (Array.isArray(b)) { 4 return [...a, ...flatten(b)] 5 } else { 6 return [...a, b] 7 } 8 }, []) 9 } 10 11 var arr = [1, [2, 3], [4, 5, 6]] 12 var newArr = flatten(arr) 13 console.log(newArr)
Method 2: 正常逻辑的递归实现
1 function flatten(arr) { 2 let arr1 = [] 3 arr.forEach((val) => { 4 // 检测左边的原型是否在右边构造函数的作用域链上 5 if (val instanceof Array) { 6 arr1 = arr1.concat(fn(val)) 7 } else { 8 arr1.push(val) 9 } 10 }) 11 return arr1 12 } 13 var arr = [1, 2, [3, 4, 5, [6, 7, 8], 9], 10, [11, 12]]; 14 var newArr = flatten(arr) 15 console.log(newArr) // output: 1,2,3,4,5,6,7,8,9,10,11,12
Method 3: apply 方式
function flatten(arr = []) { while (arr.some(r => Array.isArray(r))) { arr = [].concat.apply([], arr) } return arr; } var arr = [1, [2, 3], [4, 5, 6]] var newArr = flatten(arr) console.log(newArr)
更多方法请直接百度,方法多多
原文地址:https://www.cnblogs.com/ajaxkong/p/12002337.html
- 域名资讯:四声域名BHHS.com被BHHS公司收购
- ruby学习笔记(1)--初识语法
- 无法启用数据库中的 Service Broker,因为已存在启用的具有相同 ID 的 Service Broker。
- Centos7.2下针对LDAP的完整部署记录
- .NET Core 已经实现了PHP JIT,现在PHP是.NET上的一门开发语言
- 温故而知新:设计模式之适配器模式(Adapter)
- .NET Core RC2/RTM 明确了时间表
- kvm虚拟化关闭虚拟网卡virbr0的方法
- NET开发学习项目资源(2)
- Linux下selinux简单梳理
- 一段oracle中的“复杂”分组统计sql
- 通过Chocolatey软件包管理器安装.NET Core
- rsync同步时,删除目标目录比源目录多余文件的方法(--delete)
- 近期一枚“大文娱”dawenyu.com域名以小六位价格易主
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux下安装python环境
- 【5】进大厂必须掌握的面试题-Java面试-spring
- Python 3.7 自动化接口测试简单实例
- 从 0 开始构建一个亿级请求的微服务架构
- ruby+cucumber+watir环境搭建
- Python常用模块os和shutil学习
- Python简单实现批量下载无版权图片
- Pycharm自动添加文件头注释和函数注释参数
- ClickHouse TTL for Columns and Tables
- Sentence-BERT详解
- 分布式文件系统(HDFS和FastDFS)
- Springboot集成JUnit5优雅进行单元测试
- 音视频相关开发库和资料
- SpringSecurity认证专题之【AuthenticationManager】
- dotnet 让 C# 可以通过动态生成 HLSL 使用 DX12 的 GPU 并行计算库 ComputeSharp 的简介