面试官:怎样实现JS数组扁平化?(二)

简介: 面试官:怎样实现JS数组扁平化?(二)
3、es6 flat函数
思路:

es6的 flat函数实现数组的扁平化,语法:Array.flat(dep),dep为展开数组的维数(整数),如 dep 是 1, 就是展开1层,如想多维数组都展开成一维数组则  直接 dep 等于 Infinity

实现:
let arr = [1,2,[3,4,5]]
function es6Arr (arr) {
  return arr.flat(Infinity)
}
console.log('结果是:', es6Arr(arr)) // 结果是:[1,2,3,4,5]
4、递归实现
思路:

递归的思路就是,通过遍历,判断元素是否是数组,如果是数组则继续执行此函数,直至将

实现:
 let arr = [1, [2, [3, 4, 5]]];
  function floatDg (arr) {
    let result = []
    for(let i = 0; i < arr.length; i++) {
      if (Array.isArray(arr[i])) {
        result = result.concat(floatDg(arr[i]))
      } else {
        result.push(arr[i])
      }
    }
    return result
  }
  console.log(floatDg(arr), '递归') // 结果:[1,2,3,4,5]

当然除了以上4中还有很多种方法如:

  • es6扩展运算符符 ...
  • 正则

大家可以去思考,去实现,本篇不再多做赘述~,如有问题,请大家多多交流指正~

往期

面试官:怎么准确判断JS的数据类型?

面试官:浅拷贝和深拷贝的区别?怎么实现一个深拷贝?

面试官:你会手写bind apply 和bind吗?

面试官:call、apply和 bind有什么区别?

面试官:判断数组的方式有哪些

相关文章
|
8天前
|
JavaScript 前端开发 索引
JavaScript中的数组的内置方法全面讲解
JavaScript 数组提供了多种内置方法来高效操作数据。如 `push()` 和 `unshift()` 分别在数组尾部和头部添加元素;`pop()` 和 `shift()` 则移除尾部和头部的元素;`splice()` 可增删元素;`slice()` 创建子数组;`join()` 将数组转化为字符串;`indexOf()` 和 `includes()` 用于查找元素;`forEach()` 遍历数组。此外,`reverse()` 和 `sort()` 改变数组顺序;`fill()` 填充数组值;`slice()` 和 `concat()` 则分别用于创建子数组和合并数组。
17 2
|
8天前
|
JavaScript 前端开发 API
复习JavaScript中的数组API
这段代码介绍了JavaScript数组的几种实用方法:`fill`用于用固定值覆盖指定范围内的元素;`find`查找符合条件的第一个元素;`findIndex`获取该元素的索引;`sort`对数组排序,需提供比较函数以正确排序数字;结合`slice`与`sort`可在不改动原数组的情况下进行排序;`reverse`反转数组元素;利用`map`可创建新数组并替换其中的特定元素,同时保持原数组不变。
7 1
|
4天前
|
JavaScript 前端开发
JavaScript基础&实战(5)js中的数组、forEach遍历、Date对象、Math、String对象
这篇文章介绍了JavaScript中的数组、Date对象、Math对象以及包装类(String、Number、Boolean),并详细讲解了数组的创建、方法(如forEach、push、pop、unshift、slice、splice)和遍历操作,以及工厂方法创建对象和原型对象的概念。
JavaScript基础&实战(5)js中的数组、forEach遍历、Date对象、Math、String对象
|
4天前
|
JavaScript 前端开发 索引
JavaScript数组相关的方法有哪些?
JavaScript数组相关的方法有哪些?
|
4天前
|
JavaScript 前端开发
记录Javascript数组类练习
记录Javascript数组类练习
|
4天前
|
JavaScript 容器
JS-数组的定义
JS-数组的定义
|
6天前
|
JavaScript 前端开发
JavaScript——快速判断数组对象的值是否全部满足条件
JavaScript——快速判断数组对象的值是否全部满足条件
19 0
|
7天前
|
JavaScript 前端开发 索引
JavaScript数组的常用方法
JavaScript数组的常用方法
13 0
|
7天前
|
JavaScript
js如何添加新元素到数组中
js如何添加新元素到数组中
17 0
|
7天前
|
存储 JavaScript 索引
js之数组
js之数组
17 0