面试官:怎样实现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有什么区别?

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

相关文章
|
25天前
|
前端开发 JavaScript
前端 js 经典:数组常用方法总结
前端 js 经典:数组常用方法总结
26 0
|
3天前
|
JavaScript 前端开发 索引
JavaScript基础-数组操作:增删改查
【6月更文挑战第11天】本文介绍了JavaScript数组的增删改查操作,包括查询(索引访问、indexOf、lastIndexOf、includes)、修改(直接赋值、splice)、添加(push、unshift、splice)和删除(pop、shift、splice)。同时,文章列举了三个易错点:数组越界、splice参数理解不清及修改原数组与返回值混淆,并提供了相应的避免策略。通过代码示例展示了各种操作的用法,强调理解方法特性和实践的重要性,以提升数组操作效率。
|
8天前
|
JavaScript 前端开发
JavaScript删除数组中指定元素3种方法例子
JavaScript删除数组中指定元素3种方法例子
|
9天前
|
存储 JavaScript 前端开发
【经典算法】LeetCode350:两个数组的交集 II(Java/C/Python3/JavaScript实现含注释说明,Easy)
【经典算法】LeetCode350:两个数组的交集 II(Java/C/Python3/JavaScript实现含注释说明,Easy)
7 1
|
10天前
|
JSON JavaScript 数据格式
1.js动态的往json数据添加新属性和值 2.JSON 和 JS 对象互转 3.对象转化为数组
1.js动态的往json数据添加新属性和值 2.JSON 和 JS 对象互转 3.对象转化为数组
15 0
|
15天前
|
JavaScript
分享经典面试题:JS数组去重的多种方法
分享经典面试题:JS数组去重的多种方法
|
15天前
|
JavaScript
JS判断变量是不是数组?方法大全!
JS判断变量是不是数组?方法大全!
|
16天前
|
JavaScript 前端开发
JavaScript 解决数组查重 问题(三种解决方法)
JavaScript 解决数组查重 问题(三种解决方法)
14 0
|
20天前
|
JavaScript 前端开发
前端面试02(JS)
本文是前端面试系列的第二篇,主要涵盖了JavaScript的基础知识,包括JS的组成(ECMAScript、DOM、BOM)、内置对象(如String、Array、Math、Date等)、数组操作方法、数据类型检测方法(typeof、instanceof、constructor、Object.prototype.toString.call)、闭包的概念及其特点、前端内存泄漏的原因和类型、事件委托的优势、基本数据类型与引用数据类型的差异、原型链的工作原理以及JS实现继承的多种方式(原型链、构造函数、组合继承等)。文章结尾鼓励读者点赞和支持作者。
12 1
|
28天前
|
JSON JavaScript 前端开发
web前端入门到实战:32道常见的js面试题,2024年最新秋招是直接面试吗
web前端入门到实战:32道常见的js面试题,2024年最新秋招是直接面试吗