你能想到几种方式实现数组扁平化(越多越好)
数组扁平化:将一个多维数组,展开成一个一维数
let arr = [1,[2,3],[4,[5,6,[7]]],8];
⇒ [1,2,3,4,5,6,7,8]
数组中嵌套数组自然会想到利用递归来做,只要里面还是数组就一直向里面探索,这里就涉及到如何判断一个是不是数组,或者判断数组有几种方式
方式1 递归
function myFlat(arr) {const res = [];for (let i = 0; i < arr.length; i++) {if (Array.isArray(arr[i])) {res.push(...myFlat(arr[i]));} else {res.push(arr[i]);}}return res;}
数组方法经常用,才能够活学活用……
function flat(arr) {while (arr.some(item => Array.isArray(item))) {arr = [].concat(...arr);};return arr;};
方式2 利用api
const res1 = arr.flat(Infinity);
flat()
里面传入一个数字,表示分开的层数,Infinity表示展开无限层
let arr = [1,[2,3],[4,[5,6,[7]]],8];
arr.flat(1) = (6) [1, 2, 3, 4, Array(3), 8]
方式3 正则
const res2 = JSON.stringify(arr).replace(/\[|\]/g, '').split(',');
这个得到的是字符串
(8) ["1", "2", "3", "4", "5", "6", "7", "8"]
优化后:
const res3 = JSON.parse('[' + JSON.stringify(arr).replace(/\[|\]/g, '') + ']');
考过
你能想到几种方式实现数组扁平化(越多越好)相关推荐
- JAVA数组扁平化整合_5种方法实现数组扁平化
数组扁平化概念 数组扁平化是指将一个多维数组变为一维数组 [1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5] 复制代码 实现 1. reduce 遍历数组每一 ...
- 指针数组下标JAVA_Java语言中可用下标和指针两种方式表示数组元素。
[判断题]一行可以写多条预处理命令 [判断题]如果一个java程序中有多个类,编译后只生成一个字节码文件,其名字同主类名一致. [判断题]Protected类型的实例变量只能在本类中使用,其他类中不可 ...
- 实现数组扁平化的 6 种方式
实现数组扁平化的 6 种方式 老规矩,开局先上问题,带着问题去思考: 怎样用最普通的方法解决数组扁平化问题? ES6里面是否有一些高级的方法能够直接实现? 扁平化的实现 数组的扁平化其实就是将一个 ...
- 实现数组扁平化的6种方式
扁平化的实现 数组的扁平化其实就是将一个嵌套多层的数组 array(嵌套可以是任何层数)转换为只有一层的数组. 普通的递归实现 普通的递归思路很容易理解,就是通过循环递归的方式,一项一项地去遍历,如果 ...
- JAVA数组扁平化整合_数组扁平化的几种处理放法
清明节,这几天放假闲来无事,好好研究一下基础知识,今天看看数组扁平化该怎么处理: 先来看数组扁平化是什么: var arr = [1,2,3,4,[5,6,[7,8]],true] => [1, ...
- 实现数组扁平化的6种方法
实现数组扁平化的6种方法 扁平化的实现 方法一:普通的递归实现 方法二:利用 reduce 函数迭代 方法三:扩展运算符实现 方法四:split 和 toString 共同处理 方法五:调用 ES6 ...
- 对连续值/离散值进行预处理的两种方式(标准化/one-hot化)、反标准化/逆标准化、字符串预处理
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) tensorflow 2.0 画出model网络模型的拓扑图 ...
- JS数组扁平化flat,reduce等六种方式实现
数组扁平化:将数组中嵌套的数组拉平变成一维数组. 方法1:reduce,遍历数组每一项,若值为数组则递归遍历,否则concat 代码如下 let arr = [1, [2, 3, [4, 5], 6] ...
- 【算法图解|2】JavaScript 如何实现数组扁平化
数组的扁平化,就是将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组. 举个例子,假设有个名为 flatten 的函数可以做到数组扁平化, var arr = [1, [2, ...
最新文章
- 安装了低版本Jdk后eclipse无法打开的终极解决方法
- java模拟银行存取_JAVA基础案例 模拟银行存取款业务
- python【数据结构与算法】计数问题(分治)
- 网站社区类产品管理经验
- ASP.NET 2.0(C#) - Themes(主题)
- 4倍速!ML.NET Model Builder GPU 与 CPU 对比测试
- 使用ABAP delete duplicate时遇到的问题
- Ubuntu学习日记--Lesson3:vim编辑器使用和常用命令
- Rhino(犀牛)的视口
- 电脑怎么让图片颜色反转?怎么调图片反色效果?
- 【STM32F429的DSP教程】第18章 DSP控制函数-更好用的SIN,COS计算
- win10下office2013命令激活参考
- MT6797处理器怎么样?Helio X20处理器资料介绍
- 嵌入式操作系统风云录:历史演进与物联网未来第2章 Chapter2
- 计算机专业的短期计划范文,制定计算机学习计划范文3篇
- Shiro学习(2)身份验证
- 外包公司面试门槛高吗?软件测试员进外包公司容易吗?
- 计算机信息技术培训互评 评语,互评评语大全
- python合并json_组合两个json字典python
- DELL笔记本webcom摄像头问题解决方法
热门文章
- python爬虫抓取分页_Scrapy爬虫框架之Scrapy爬取分页数据(一)
- Java char jdk_java学习系列之二---字符串(char.String.StringBuilder以及StringBuffer)
- 零基础学python图文版-Day2 怎么学 Python?
- python下载特别慢-Python3 用 urllib 下载图片非常慢,会是什么原因呢?
- 学完python能做什么-学完Python开发可以从事哪些行业?
- python的第三方库是干什么用的-python标准库和第三方库的区别
- 国外大神一张图学会python-学习Python不得不关注和学习的国外大神博客
- 三星智能电视将用户语音隐私泄露给第三方?
- c语言答案选择题,C语言选择题(附答案)
- 微信计步器怎么不计步_送我一顶圣诞帽@星尘StarDust,制作一个圣诞创意微信头像...