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

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

相关文章
|
15天前
|
JSON JavaScript 前端开发
[JS]面试官:你的简历上写着熟悉jsonp,那你说说它的底层逻辑是怎样的?
本文介绍了JSONP的工作原理及其在解决跨域请求中的应用。首先解释了同源策略的概念,然后通过多个示例详细阐述了JSONP如何通过动态解释服务端返回的JavaScript脚本来实现跨域数据交互。文章还探讨了使用jQuery的`$.ajax`方法封装JSONP请求的方式,并提供了具体的代码示例。最后,通过一个更复杂的示例展示了如何处理JSON格式的响应数据。
27 2
[JS]面试官:你的简历上写着熟悉jsonp,那你说说它的底层逻辑是怎样的?
|
1月前
|
自然语言处理 前端开发 JavaScript
🛠️ JavaScript数组操作指南:20个精通必备技巧🚀
本文详细介绍了 JavaScript 中的 20 个高效数组操作技巧,涵盖了从基本的添加、移除元素,到数组转换和去重等高级操作。强调了不可变性的重要性,提供了清晰的代码示例,帮助开发者编写更整洁和高效的代码。无论是新手还是经验丰富的开发者,这些技巧都将显著提升您的编码能力,使您在项目中更具竞争力。
24 2
|
1月前
|
JavaScript 前端开发 测试技术
JS都有哪些操作数组的方法
JS都有哪些操作数组的方法
20 3
|
1月前
|
JavaScript
js删除数组中已知下标的元素
js删除数组中已知下标的元素
35 4
|
1月前
|
缓存 JavaScript 前端开发
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
31 1
|
1月前
|
JavaScript 前端开发 Java
【javaScript数组,函数】的基础知识点
【javaScript数组,函数】的基础知识点
23 5
|
1月前
|
JavaScript 前端开发 索引
JS 删除数组元素( 5种方法 )
JS 删除数组元素( 5种方法 )
38 1
|
1月前
|
Web App开发 JavaScript 前端开发
前端Node.js面试题
前端Node.js面试题
|
1月前
|
JavaScript 前端开发 API
JS中数组的方法flat()怎么用
JS中数组的方法flat()怎么用
15 0
|
1月前
|
JavaScript 前端开发 索引
JavaScript中数组、对象等循环遍历的常用方法介绍(一)
JavaScript中数组、对象等循环遍历的常用方法介绍(一)
21 0