转成数组_JavaScript之数组扁平化

今天给大家分享一下JavaScript的数组扁平化。

1. 扁平化

数组的扁平化,就是将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组。举个例子,假设有个名为 flatten 的函数可以做到数组扁平化,效果就会如下:

a9d492aa948e1da36c05321c654102d9.png

知道了效果是什么样的了,我们可以去尝试着写这个 flatten 函数了。

2. 递归

我们最一开始能想到的莫过于循环数组元素,如果还是一个数组,就递归调用该方法:

873dcb351eff127aea217cedbd386eea.png

3. toString

如果数组的元素都是数字,那么我们可以考虑使用 toString 方法,因为:[1, [2, [3, 4]]].toString()

调用 toString 方法,返回了一个逗号分隔的扁平的字符串,这时候我们再 split,然后转成数字不就可以实现扁平化了吗?

b0551f06da5818e4549ede068f7ef09f.png

然而这种方法使用的场景却非常有限,如果数组是 [1, '1', 2, '2'] 的话,这种方法就会产生错误的结果。

4. undercore

那么如何写一个抽象的扁平函数,来方便我们的开发呢,所有又到了我们抄袭 underscore 的时候了,在这里直接给出源码和注释,但是要注意,这里的 flatten 函数并不是最终的 _.flatten,为了方便多个 API 进行调用,这里对扁平进行了更多的配置。

52700edfb2a2bc587101551a99d146a6.png

解释下 strict,在代码里我们可以看出,当遍历数组元素时,如果元素不是数组,就会对 strict 取反的结果进行判断,如果设置 strict 为 true,就会跳过不进行任何处理,这意味着可以过滤非数组的元素。注意,以上实现的细节并不是完全按照 underscore。

学习相关推荐(编程必备辅助):

①:搜索关注公众号“只会写BUG”,分享更多干货知识,资讯,教程等

②:海量编程类资料零基础到高级亟待领取!!!

如果觉得对你有一丢丢帮助,麻烦动动你的小手指【关注】一下上面的公众号吧,或者【转发】让更多人看到该文章。大家也可积极后台给我留言,多多交流,共同进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/441811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【POJ - 2676】Sudoku (经典深搜,dfs数独)

题干: Sudoku is a very simple task. A square table with 9 rows and 9 columns is divided to 9 smaller squares 3x3 as shown on the Figure. In some of the cells are written decimal digits from 1 to 9. The other cells are empty. The goal is to fill…

计算机专业408题目结构,2019考研408计算机组成原理知识:计算机系统层次结构

计算机组成原理在408计算机综合考试中所占分值45分,说明是必考的重点内容,考生要在这部分多花时间复习。以下是新东方在线整理的的计算机组成原理知识,希望大家认真看。2019考研408计算机组成原理知识:计算机系统层次结构1. 计算机硬件的基本…

overleaf表格_latex 表格制作

在制作latex表格时遇到了以下问题:一、合并单元格包括多行合并、多列合并、多行多列同时合并。多行合并: \multirow{2}{*}{Multi-Row}多列合并: \multicolumn{2}{|c|}{Multi-Column}多行多列同时合并:\multicolumn{2}{|c|}{\multi…

【HihoCoder - 1268】九宫 (dfs,深搜)

题干: 小Hi最近在教邻居家的小朋友小学奥数,而最近正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不重复的填入一个3*3的矩阵当中,使得每一行、每一列和每一条对角线的和都是相同的。 三阶幻方又被称作九宫格,在…

河北师范大学计算机应用技术分数线,2019年河北师范大学各专业录取分数线

高考总分达到或超过某一分数线的考生档案,才有资格被招生高校调阅并选择录取。各高校不同专业每一年的录取分数线有所区别,下文是小编给大家整理的2019年河北师范大学各省各专业高考录取分数线详情,供参考!2019河北师范大学各省各…

mysql in partition_MySQL Partition分区扫盲

MySQL从5.1.3开始支持Partition,你可以使用如下命令来确认你的版本是否支持Partition:mysql> SHOW VARIABLES LIKE %partition%;--------------------------| Variable_name | Value |--------------------------| have_partitioning | YES |--------…

【HihoCoder - 1662】查找三阶幻方 (九宫)(暴力)

题干: 给定一个N x M的矩阵,请你数一数其中有多少个3 x 3的子矩阵可以构成三阶幻方? 如果3 x 3的矩阵中每一行、每一列和两条对角线上的3个数之和都相等,我们就认为其构成一个三阶幻方。 Input 第一行包含两个整数N和M。(1 …

mysql主从结构主数据库_mysql主从结构主数据库中的日志

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户…

计算机英语反思总结,计算机在英语教学中辅助作用的反思

计算机在英语教学中辅助作用的反思 (3页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!9.9 积分题目:计算机在英语教学中辅助作用的反思科目: SS 学校: 灵石第一职…

C 的Pair用法分类整理(精)

1 pair的应用 pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一个结构体&#xff…

mysql创建数据库没有默认值报错_详解Mysql数据库date, datetime类型设置0000-00-00默认值(default)报错问题...

现象:MySQL5.7版本之后,date, datetime类型设置默认值"0000-00-00",出现异常:Invalid default value for time原因:在命令行窗口查看当前的sql_mode配置:select sql_mode;结果如下:ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE,ERROR_FO…

计算机专业英语霍洪涛出版社,计算机专业英语(霍洪涛)课件Chapter 4.ppt

计算机专业英语(霍洪涛)课件Chapter 4谢谢 * Chapter 4 Operating System Review 前驱,前任 后继,继任 常见的 足够的 有时;在某种情况下 不局限于 目录,存货清单 支付、支出 伪码 * predecessor successor commonplace not limit…

【HDU - 2102】A计划 (麻烦一点的bfs)

题干: 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验。魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老。年迈的国王正是心急如焚,告招天下…

ubuntu cpp与mysql连接_linux(ubuntu)下C++访问mysql数据库

向表中插入(删除)一条数据 #include #include using namespace std;int main(int argc, char* argv[]){//准备mysql的访问结构MYSQL mysql;mysql_init( &mysql );mysql_real_connect(&mysql,"192.168.16.114",//要访问数据库的IP地址"root",//用户…

渤海船舶职业学院计算机应用公司,渤海船舶职业学院

2016年招生章程已经公布,出国留学网高考网为大家提供2016年渤海船舶职业学院招生章程已公布,更多高考招生信息请关注我们网站的更新!渤海船舶职业学院2016年招生章程一、学校自然情况说明学校全称:渤海船舶职业学院办学地点及校址&#xff1a…

C++手动开启O2优化(以及-O -O1 -O2 -O3优化的知识点)(竞赛可用)

O1优化会消耗少多的编译时间,它主要对代码的分支,常量以及表达式等进行优化。 O2会尝试更多的寄存器级的优化以及指令级的优化,它会在编译期间占用更多的内存和编译时间。 O3在O2的基础上进行更多的优化,例如使用伪寄存器网络&a…

nginx pdo_mysql_lnmp环境,安装PHP7的扩展pdo_mysql报错的问题?

环境信息:centos7.4 php7.2 mysql5.71.php是编译安装的2.MySQL是用rpm安装的mysql-community-client-5.7.23-1.el7.x86_64.rpmmysql-community-common-5.7.23-1.el7.x86_64.rpmmysql-community-devel-5.7.23-1.el7.x86_64.rpmmysql-community-embedded-5.7.23-1.el7…

【qduoj - 1010】easy problem(巧妙的枚举)

题干: 给你一个数字N,N的范围是1~1000000,求一个最小的正整数M,这个数字M的各个位的数字加上它本身之和恰好为N。当然,如果没有解,输出0。 输入 输入数据由多组数据组成,每行由一个数字N组成…

电大mysql实验作业_成教作业网提供国开电大 MySQl数据库应用 实验训练4答案

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼实验训练4:数据库系统维护实验目的:基于实验1创建的汽车用品网上商城,练习创建用户、权限管理,数据库备份与恢复方法,数据导出导入的方法,体会数据库系统维护的…

小学教师计算机国培培训总结,小学教师国培培训心得体会

短暂而又漫长的国培结束了,在这三个月里,收获很大,但最大的收获是思想的转变,此次培训活动安排分三个阶段:第一阶段,理论学习(1 0天);第二阶段,教学实践 (基地学习50天);第三阶段,集…