转成数组_JavaScript之数组扁平化
今天给大家分享一下JavaScript的数组扁平化。
1. 扁平化
数组的扁平化,就是将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组。举个例子,假设有个名为 flatten 的函数可以做到数组扁平化,效果就会如下:
知道了效果是什么样的了,我们可以去尝试着写这个 flatten 函数了。
2. 递归
我们最一开始能想到的莫过于循环数组元素,如果还是一个数组,就递归调用该方法:
3. toString
如果数组的元素都是数字,那么我们可以考虑使用 toString 方法,因为:[1, [2, [3, 4]]].toString()
调用 toString 方法,返回了一个逗号分隔的扁平的字符串,这时候我们再 split,然后转成数字不就可以实现扁平化了吗?
然而这种方法使用的场景却非常有限,如果数组是 [1, '1', 2, '2'] 的话,这种方法就会产生错误的结果。
4. undercore
那么如何写一个抽象的扁平函数,来方便我们的开发呢,所有又到了我们抄袭 underscore 的时候了,在这里直接给出源码和注释,但是要注意,这里的 flatten 函数并不是最终的 _.flatten,为了方便多个 API 进行调用,这里对扁平进行了更多的配置。
解释下 strict,在代码里我们可以看出,当遍历数组元素时,如果元素不是数组,就会对 strict 取反的结果进行判断,如果设置 strict 为 true,就会跳过不进行任何处理,这意味着可以过滤非数组的元素。注意,以上实现的细节并不是完全按照 underscore。
学习相关推荐(编程必备辅助):
①:搜索关注公众号“只会写BUG”,分享更多干货知识,资讯,教程等
②:海量编程类资料零基础到高级亟待领取!!!
如果觉得对你有一丢丢帮助,麻烦动动你的小手指【关注】一下上面的公众号吧,或者【转发】让更多人看到该文章。大家也可积极后台给我留言,多多交流,共同进步。
转成数组_JavaScript之数组扁平化相关推荐
- java script 遍历数组_JavaScript中数组中遍历的方法
前言 最近看了好几篇总结数组中遍历方法的文章,然而"纸上得来终觉浅",决定此事自己干.于是小小总结,算是自己练手了. 各种数组遍历方法 数组中常用的遍历方法有四种,分别是: for ...
- Dao接口返回数组_JavaScript二进制数组(2)TypedArray视图
ArrayBuffer对象作为内存区域可以存放多种类型的数据.同一段内存,不同数据有不同的解读方式,这种解读方式称为"视图(view)".ArrayBuffer有两种类型的视图,一 ...
- js中遍历数组加到新数组_javaScript 遍历数组方法总结
数组和对象一样都是引用数据类型,数组中的数据按照顺序排列,从0开始,把这个叫做索引,也叫做下标,把数组中的每个数据叫做元素,或者简称元 . 数组的新建方式有字面量创建和构造函数创建两种方法 字面量创建 ...
- JS - 将tree(树形)数据结构格式改为一维数组对象格式(扁平化)
需求:将JSON①数据格式输出为JSON②格式. JSON①: [{sortName:'小明',sortCode: 'xm',children:[]},{sortName:'小刚',sortCode: ...
- 树形json扁平化,一维数组树状化,对象深拷贝,元素后插入新元素,格式或动态路由等常用js合集
索引 一.在元素后面插入一个新的元素. 二.对象或者数组的深拷贝. 三.从服务器端获取到动态路由表的格式化. 四.json树形数据扁平化处理(变成一维数组) 五.一维数组转化为树状结构对象. 六.防抖 ...
- php n维数组扁平化,js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解...
数组的扁平化:将多维数组变成一维数组 对于一个像这样的嵌套数组:a=[1,[2,[3,4]],5,6]我们想要把它变成一个一维数组,有下面几种方法: 方法一:递归一 function parseArr ...
- 数组去重与数组扁平化
一.数组去重(1)indexOf() function only(arr){var res=[];arr.forEach(function(item){if(res.indexOf(item)==-1 ...
- JAVA数组扁平化整合_数组扁平化的几种处理放法
清明节,这几天放假闲来无事,好好研究一下基础知识,今天看看数组扁平化该怎么处理: 先来看数组扁平化是什么: var arr = [1,2,3,4,[5,6,[7,8]],true] => [1, ...
- web前端数组处理之扁平化数组
在进行前端开发的时候避免不了会遇到很多数组的情况,其中不乏会存在数组套数组或者需要合并数组的情况.今天小千就来给大家介绍一下如何将数组扁平化处理. 数组扁平化概念:用于将嵌套多层的数组"拉平 ...
最新文章
- android听书功能实现,基于Android的喜马拉雅听书的实现.docx
- Mako 模板系统文档翻译(1) 使用基础
- -webkit-font-smoothing
- android+Unity3D游戏开发之简单的物体运动
- python求二维数组各行最大值_python+numpy按行求一个二维数组的最大值方法
- Qt弹出的窗口始终位于界面最前面的方法
- PHP套入表格公式,单元格公式引用的方法
- nlp项目:搭建一个简单的问答系统
- 详解最实用的几种dll注入方式
- Linux系统手机投屏实现电脑控制手机(Windows)
- java中导入自定义类_导入自定义Java类
- CF 106C Buns
- Hackthebox:Devel Walkthrough
- 从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t
- 水印相机定位不准确怎么办_云联相机app下载-云联相机app安卓版下载v1.0.0
- k8s job机制初探
- 大数据时代到来如何构建国家地质基础数据更新体系
- Verycd上.net一些教程,自己留着做备忘..
- ORA-39126: 在 KUPW$WORKER.PUT_DDLS [TABLE_STATISTICS] 中 Worker 发生意外致命错误
- linux endpoint,Microsoft Defender for Endpoint (Linux)新增终端安全响应功能
热门文章
- Spring 4 MVC入门实例
- Linux内核Crash分析
- Linux logo和屏幕光标
- vxworks 调式
- java桥_JAVA 桥模式
- css 实现标签切换,CSS_纯CSS实现Tab切换标签效果代码,本文实例讲述了纯CSS实现Tab切 - phpStudy...
- 如何使用网上下载的arcgis工具箱,报错汇总
- arcgis中字段计算器利用python比较大小
- Azure Table storage 基本用法 -- Azure Storage 之 Table
- 屏幕录像专家6.0_迅捷屏幕录像工具和屏幕录像专家哪个更好用?