flatten(扁平化)数组
前言
顾名思义,扁平化就是将嵌套的多维数组变成一维数组的过程。今天将通过几种方式来实现数组的扁平化。
先定义这几种方法公用的一个数组
const arr = [1, 2, [3, 4, [5, 6]]]
初级版
初级版也通过两种方式来实现
第一种
利用数组的concat方法
function flatten(arr) {let res = [] arr.map(element => {if(Array.isArray(element)) {res = res.concat(flatten(element))}else{res.push(element)}})return res
}
第二种
使用参数默认值的方法
function flatten(arr, res = []) {for (let item of arr) {if (Array.isArray(item)) {res = flatten03(item, res) }else{res.push(item) }}return res
}
进阶版
使用…三点运算符结合concat方法
function flatten(arr) {while(arr.some(item => Array.isArray(item))) {arr = [].concat(...arr)}return arr
}
终极版
Array.flat(n)是ES10扁平数组的api, n表示维度, n值为 Infinity时维度为无限大。
我们的例子中是个三维数组,所以,写法为:
arr.flat(3)
flatten(扁平化)数组相关推荐
- 【通俗易懂】vue-elementul实现树形数据表格,后台返回的扁平化数组进行树形结构转换处理
效果图 需求是做一个这种的多层级表格,树形数据表格. 大家可能遇到的问题 一种是不知道如何做这种多层级的表格 一种是后台给自己返回的数据不是树形的,也就是没有子父级.全是一条条的扁平化数组.类似这样 ...
- 实现 flatten 扁平化对象和数组
/** * 对象扁平化 * 说明:请实现 flatten(input) 函数,input 为一个 javascript 对象(Object 或者 Array),返回值为扁平化后的结果. * ...
- 利用Gson对json进行flatten(扁平化)处理
目录 一.Gson的简单介绍 二.通过构建json树实现两层json的解析 三.通过递归实现多层json的解析 一.Gson的简单介绍 Gson是Google发布的一个处理json的java库.通过使 ...
- web前端数组处理之扁平化数组
在进行前端开发的时候避免不了会遇到很多数组的情况,其中不乏会存在数组套数组或者需要合并数组的情况.今天小千就来给大家介绍一下如何将数组扁平化处理. 数组扁平化概念:用于将嵌套多层的数组"拉平 ...
- 扁平化数组的几种方法
一.扁平化的概念 扁平化管理是企业为解决层级结构的组织形式在现代环境下面临的难题而实施的一种管理模式.当企业规模扩大时,原来的有效办法是增加管理层次,而现在的有效办法是增加管理幅度.当管理层次减少而管 ...
- 转成数组_JavaScript之数组扁平化
今天给大家分享一下JavaScript的数组扁平化. 1. 扁平化 数组的扁平化,就是将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组.举个例子,假设有个名为 flatte ...
- wxpython 按钮 扁平化_tensorflow tensor Flatten 张量扁平化,多通道转单通道数据
slim.flatten(inputs,outputs_collections=None,scope=None) (注:import tensorflow.contrib.slim as slim) ...
- es6删除数组某一项_精学手撕系列——数组扁平化
参考文章:面试官连环追问:数组拍平(扁平化) flat 方法实现 编者荐语: 在前端面试中,手写flat是非常基础的面试题,通常出现在笔试或者第一轮面试中,主要考察面试者基本的手写代码能力和JavaS ...
- JAVA数组扁平化整合_一文搞定数组扁平化(超全面的数组拉平方案及实现)
前言 面试手写代码在大厂面试中非常常见,秋招中面试小米就手写了一道flat实现的代码题,当时通过递归方式实现了数组扁平化逻辑,但没有考虑多种实现方案及其边界条件(主要是对所涉及到高阶函数的知识点不够熟 ...
- JavaScript数组扁平化的实现
数组扁平化 数组扁平化指的是把一个多维数组拆分成一个一维数组. 递归 function flattern(arr){let result = [];for(let i = 0, len = arr.l ...
最新文章
- [C/CPP系列知识] Type difference of character literals 和 bool in C and C++
- mysql设置参数0和1_MySQL 8.0 首个自适应参数横空出世
- 电脑新手:一次了解电脑键盘上每个键的含义!
- Neo4j Java Rest绑定入门(Heroku部署)
- 十六进制数用int吗_你真的精通C语言吗?来解这十道C语言迷题试试吧!
- JSK-243 三角形的路径权【动态规划】
- MS CRM 2011 如何向自定义Ribbon按钮传递参数
- 寻找最小term,自制面试题
- rdesktop连接windows远程桌面详解
- 华为大数据解决方案 (文末附PPT下载)
- iOS清除缓存功能开发
- 骞云云原生运维管理平台7.0版本正式发布
- 广工数据结构课设——校园导游咨询(C语言)
- LIS的O(nLogN)算法
- 网盘搜索工具整理2020.8
- 《极简学习法》读书笔记
- 今年有多少周?今天是今年的第几天?第几周?
- HCIA—代理ARP (路由式代理ARP+vlan内代理ARP+vlan间代理ARP) [理论+实验验证]
- vite打包报错EPERM: operation not permitted
- 数据库 - 数据查询
热门文章
- 印象笔记:部分Mac用户因为故障而丢失数据
- 我为大家整理了一波 Java 超全面试题
- rk3288编译android,RK3288 源码编译Android 7.1.2 自动编译
- 分布式秒杀电商-微服务架构图 上帝视角分析
- idea+springmvc+spring+mybatis+maven整合返回json数据web api-
- 机器学习中是如何处理误差的
- 计算机硬盘对考,两个硬盘对拷(硬盘对刻)图文教程
- 揭秘微信对方正在输入……到底表示什么意思?
- 线控红外探测器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 电平触发,边沿触发,脉冲触发