数组扁平化的方法汇总
文章目录
- 一、数组扁平化
- 二、其他的方式汇总
- 1.迭代实现
- 2.普通递归实现
- 3.高级递归
- 4.toString方法
- 5.apply方法
一、数组扁平化
数组扁平化就是,把多维数组将维变成一维数组,我们看一下最基本的用法
let arr = [1,2,[3,4],[5,6],7,8];//二维数组
console.log(arr.flat();)//[1,2,3,4,5,6,7,8];//一维数组//二维以上数组
//使用官方给的方法 var flatter = arr.flat([depth]);//depth可以指定嵌套的层级 `[]`:表示可以传也可以不传,默认是1
let arr2 = [1,2,[3,4,[5,6]],[7,8]];//三维数组
console.log(arr2.flat(2));//[1,2,3,4,5,6,7,8]
二、其他的方式汇总
1.迭代实现
let arr2 = [1,2,[3,4,[5,6]],[7,8]];while(arr2.some(item=>Array.isArray(item))){//这个地方主要使用es6 扩展运算符 `...`arr = [].concat(...arr);}return arr;// [1,2,3,4,5,6,7,8]
2.普通递归实现
let arr3 = [1,2,[3,4,5,[6,7],8],9,10,[11,[12,13]]];const flatten = (arr)=>{let result = [];arr.forEach((item,i,arr)=>{if(Array.isArray(item)){//如果item是一个数组,那么就继续递归,直到不是数组;result = [].concat(flatten(item));}else{result.push(arr[i]);}})return result;//[1,2,3,4,5,6,7,8,9,10,11,12,13]}
3.高级递归
const flatten = array=>array.reduce(pre,cur)=>(Array.isArray(cur)?[...pre,...cur]:[...pre,cur],[])//pre 有默认值是[],所以只需先先判断cur就行了,具体的可以看reduce的默认参数。
4.toString方法
let arr4 = [1,2,3,4,[5,6,[7,8]],9,10];
console.log(arr4.toString();)//"1,2,3,4,5,6,7,8,9,10"
console.log(arr4.toString().split(','))//[1,2,3,4,5,6,7,8,9,10]
5.apply方法
使用这个方法之前我们需要知道apply这个方法是如何使用的,下面我们说一下使用这个方法的基本要求
我们可以使用 push 将元素追加到数组中。由于 push 接受可变数量的参数,所以也可以一次追加多个元素。
但是,如果 push 的参数是数组,它会将该数组作为单个元素添加,而不是将这个数组内的每个元素添加进去,因此我们最终会得到一个数组内的数组。如果不想这样呢?concat 符合我们的需求,但它并不是将元素添加到现有数组,而是创建并返回一个新数组。然而我们需要将元素追加到现有数组…那么怎么做好?难道要写一个循环吗?别当然不是!
apply 正派上用场!
let arr = [1,2,[3,4,5,[6,7],8],9,10,[11,[12,13]]];const flatten = array=>{while(arr.some(item=>Array.isArray(item)){arr = [].concat.apply([],arr);}return arr;//[1,2,3,4,5,6,7,8,9,10,11,12,13]
}
数组扁平化的方法汇总相关推荐
- JAVA数组扁平化整合_JS数组扁平化(flat)方法总结详解
需求:多维数组=>一维数组 let ary = [1, [2, [3, [4, 5]]], 6]; let str = JSON.stringify(ary); 第0种处理:直接的调用 arr_ ...
- JAVA数组扁平化整合_数组扁平化的几种处理放法
清明节,这几天放假闲来无事,好好研究一下基础知识,今天看看数组扁平化该怎么处理: 先来看数组扁平化是什么: var arr = [1,2,3,4,[5,6,[7,8]],true] => [1, ...
- es6删除数组某一项_精学手撕系列——数组扁平化
参考文章:面试官连环追问:数组拍平(扁平化) flat 方法实现 编者荐语: 在前端面试中,手写flat是非常基础的面试题,通常出现在笔试或者第一轮面试中,主要考察面试者基本的手写代码能力和JavaS ...
- 实现JavaScript数组拍平/扁平化的方法
实现JavaScript数组拍平/扁平化的方法 请写出一个数组拍平函数,效果如下: var arr=['a', ['b', 'c'], 2, ['d', 'e', 'f'], 'g', 3, 4]; ...
- JAVA数组扁平化整合_5种方法实现数组扁平化
数组扁平化概念 数组扁平化是指将一个多维数组变为一维数组 [1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5] 复制代码 实现 1. reduce 遍历数组每一 ...
- JS手写数组扁平化(flat)方法
方法介绍 数组扁平化方法 Array.prototype.flat() 也叫数组拍平.数组拉平.数组降维. Array.prototype.flat() 用于将嵌套的数组"拉平", ...
- 实现数组扁平化的6种方法
实现数组扁平化的6种方法 扁平化的实现 方法一:普通的递归实现 方法二:利用 reduce 函数迭代 方法三:扩展运算符实现 方法四:split 和 toString 共同处理 方法五:调用 ES6 ...
- JS----JavaScript中数组扁平化
扁平化 一. 什么是数组扁平化? 数组扁平化就是将一个多层嵌套的数组 (Arrary) 转化为只有一层. 数组扁平化概念:数组扁平化是指将一个多维数组变为一维数组 // 多层嵌套 [1, 2, [3, ...
- 数组去重与数组扁平化
一.数组去重(1)indexOf() function only(arr){var res=[];arr.forEach(function(item){if(res.indexOf(item)==-1 ...
- 【算法图解|2】JavaScript 如何实现数组扁平化
数组的扁平化,就是将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组. 举个例子,假设有个名为 flatten 的函数可以做到数组扁平化, var arr = [1, [2, ...
最新文章
- H3C V7 AC https页面无法重定向问题处理经验总结
- python语言if语句-Python中的if判断语句入门
- Velocity语法大全
- 回归树与基于规则的模型(part2)--简单回归树
- java word批注_编写Java批注
- excel实战应用案例100讲(十五)-在Excel中对Python进行操作完美工具PyXLL-Jupyter
- StackRec: 通过迭代堆叠实现推荐系统的高效训练
- LuoguP2756 飞行员配对方案问题(最大流)
- 各种Python简单功能代码
- C#验证字符串是否是数字,是否包含中文,是否是邮箱格式,是否是电话格式
- Python开发工具PyCharm中文版安装与配置详细图文教程
- 在线旅游网站技术讲解
- ctfshow中Misc入门WP(超级全)
- Unity3D射击类游戏制作第三节--游戏模型
- 移动开发APP的开发框架
- 有趣实用的app分享,强烈推荐
- CF1555D Say No to Palindromes题解--zhengjun
- React css-in-js emotion
- 【自考一次过】《信息资源管理》第4章 信息系统资源内容管理
- 使用Bmob遇到的坑与解决办法
热门文章
- [转]三大运营商借云转型 虚拟资源池与并发计算是核心能力
- JAVA看云判断天气_如何看云识天气
- Hulu推荐:小众又新颖的综艺
- matinee和matin区别_【近义词辨析】An和Année, Jour和Journée如何区别
- xposed绕过模拟器检测_绝地求生刺激战场怎么避开模拟器检测?避开模拟器检测方法分享...
- 移动apn接入点哪个快_2020年北京移动电信联通校园卡5G网速究竟有多快?
- c语言编写一个找零程序,C语言找零程序求修改
- Qt CRC16校验中,有时候电脑计算的CRC值和单片机中计算的值不一样
- flea-db使用之封装JDBC接入
- 趣图 | 念念不忘必有回响