文章目录

  • 一、数组扁平化
  • 二、其他的方式汇总
    • 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]
}

数组扁平化的方法汇总相关推荐

  1. JAVA数组扁平化整合_JS数组扁平化(flat)方法总结详解

    需求:多维数组=>一维数组 let ary = [1, [2, [3, [4, 5]]], 6]; let str = JSON.stringify(ary); 第0种处理:直接的调用 arr_ ...

  2. JAVA数组扁平化整合_数组扁平化的几种处理放法

    清明节,这几天放假闲来无事,好好研究一下基础知识,今天看看数组扁平化该怎么处理: 先来看数组扁平化是什么: var arr = [1,2,3,4,[5,6,[7,8]],true] => [1, ...

  3. es6删除数组某一项_精学手撕系列——数组扁平化

    参考文章:面试官连环追问:数组拍平(扁平化) flat 方法实现 编者荐语: 在前端面试中,手写flat是非常基础的面试题,通常出现在笔试或者第一轮面试中,主要考察面试者基本的手写代码能力和JavaS ...

  4. 实现JavaScript数组拍平/扁平化的方法

    实现JavaScript数组拍平/扁平化的方法 请写出一个数组拍平函数,效果如下: var arr=['a', ['b', 'c'], 2, ['d', 'e', 'f'], 'g', 3, 4]; ...

  5. JAVA数组扁平化整合_5种方法实现数组扁平化

    数组扁平化概念 数组扁平化是指将一个多维数组变为一维数组 [1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5] 复制代码 实现 1. reduce 遍历数组每一 ...

  6. JS手写数组扁平化(flat)方法

    方法介绍 数组扁平化方法 Array.prototype.flat() 也叫数组拍平.数组拉平.数组降维. Array.prototype.flat() 用于将嵌套的数组"拉平", ...

  7. 实现数组扁平化的6种方法

    实现数组扁平化的6种方法 扁平化的实现 方法一:普通的递归实现 方法二:利用 reduce 函数迭代 方法三:扩展运算符实现 方法四:split 和 toString 共同处理 方法五:调用 ES6 ...

  8. JS----JavaScript中数组扁平化

    扁平化 一. 什么是数组扁平化? 数组扁平化就是将一个多层嵌套的数组 (Arrary) 转化为只有一层. 数组扁平化概念:数组扁平化是指将一个多维数组变为一维数组 // 多层嵌套 [1, 2, [3, ...

  9. 数组去重与数组扁平化

    一.数组去重(1)indexOf() function only(arr){var res=[];arr.forEach(function(item){if(res.indexOf(item)==-1 ...

  10. 【算法图解|2】JavaScript 如何实现数组扁平化

    数组的扁平化,就是将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组. 举个例子,假设有个名为 flatten 的函数可以做到数组扁平化, var arr = [1, [2, ...

最新文章

  1. H3C V7 AC https页面无法重定向问题处理经验总结
  2. python语言if语句-Python中的if判断语句入门
  3. Velocity语法大全
  4. 回归树与基于规则的模型(part2)--简单回归树
  5. java word批注_编写Java批注
  6. excel实战应用案例100讲(十五)-在Excel中对Python进行操作完美工具PyXLL-Jupyter
  7. StackRec: 通过迭代堆叠实现推荐系统的高效训练
  8. LuoguP2756 飞行员配对方案问题(最大流)
  9. 各种Python简单功能代码
  10. C#验证字符串是否是数字,是否包含中文,是否是邮箱格式,是否是电话格式
  11. Python开发工具PyCharm中文版安装与配置详细图文教程
  12. 在线旅游网站技术讲解
  13. ctfshow中Misc入门WP(超级全)
  14. Unity3D射击类游戏制作第三节--游戏模型
  15. 移动开发APP的开发框架
  16. 有趣实用的app分享,强烈推荐
  17. CF1555D Say No to Palindromes题解--zhengjun
  18. React css-in-js emotion
  19. 【自考一次过】《信息资源管理》第4章 信息系统资源内容管理
  20. 使用Bmob遇到的坑与解决办法

热门文章

  1. [转]三大运营商借云转型 虚拟资源池与并发计算是核心能力
  2. JAVA看云判断天气_如何看云识天气
  3. Hulu推荐:小众又新颖的综艺
  4. matinee和matin区别_【近义词辨析】An和Année, Jour和Journée如何区别
  5. xposed绕过模拟器检测_绝地求生刺激战场怎么避开模拟器检测?避开模拟器检测方法分享...
  6. 移动apn接入点哪个快_2020年北京移动电信联通校园卡5G网速究竟有多快?
  7. c语言编写一个找零程序,C语言找零程序求修改
  8. Qt CRC16校验中,有时候电脑计算的CRC值和单片机中计算的值不一样
  9. flea-db使用之封装JDBC接入
  10. 趣图 | 念念不忘必有回响