文章目录

  • 一、数组扁平化
  • 二、其他的方式汇总
    • 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. jquery跳出当前的each循环的方式
  2. C和C++中static的用法及友元
  3. AutoMapperHelper
  4. 中南大学 oracle试卷,数据库原理期末复习(中南大学)数据库原理、技术及应用2.ppt...
  5. apktoolkit apk反编译没有文件_[工具] Mac下一键APK逆向环境
  6. HTTP协议方法及状态码(HTTP协议入门必备)
  7. ios Image裁剪成圆形的方法
  8. java 13种技术_JavaEE的13种核心技术
  9. oracleI基础入门(8)--table--union
  10. 回味Python2.7——笔记3
  11. 思科防火墙syslog 配置
  12. 微信小程序 测试号管理(appid和密钥)
  13. 影评分析第3篇 上映4天,票房7.4亿的《海王》,用数据看大片!
  14. java中最大最小值
  15. UFS Host基础特性分析 -- 软件部分
  16. Mac苹果电脑总是自动重启?怎么解决自动重启问题
  17. OSChina 周五乱弹 ——程序猿到底算不算歧视
  18. Mac电脑如何通过终端隐藏应用程序?
  19. HazelEngine 学习记录 - Layers
  20. 捡了西瓜丢芝麻——注意编程细节

热门文章

  1. 2005高考作文题目汇总
  2. 「弹性权重巩固(EWC/Elastic Weight Consolidation)」。
  3. 2021年中国DDI(DNS-DHCP-IPAM)解决方案市场趋势报告、技术动态创新及2027年市场预测
  4. Android app开发:代码切换移动数据走SIM1/SIM2
  5. 运用jQuery实现一个简易轮播图
  6. 算法:什么是宠物收养所问题?
  7. 5G赋能新文旅 巡天遥看一千河
  8. 记一次前端实习生面试
  9. 当当网按关键字搜索商品教程
  10. 线性代数 矩阵相似对角化的理解