阿里前端面试题之获取嵌套数组的深度

简介: 阿里前端面试题之获取嵌套数组的深度

题目描述

获取嵌套数组的深度,给定一个带嵌套的数组,实现一个方法可获取嵌套数组的最大深度,数组无嵌套子数组则返回0,有一层嵌套子数组则返回1,以此类推。

示例:

  • getArrayDeep([1,2,[3,[1,[0]]]]); 返回3
  • getArrayDeep([]);   返回0
  • getArrayDeep([[[[]]]]) 返回3
  • getArrayDeep([0,[2],[2,[3]]]); 返回2

解题思路

使用递归的思想进行遍历,同时使用flag标识符来标记目标元素是否是数组,如果是数组,存储到临时数组中,然后投入递归,所有的递归结束后,判断flag是true还是false,如果是true,则返回临时数组中的最大值,如果是false则返回1。

function recursiveMax(input) {
  var flag = false;
  var num = [];
  for (var i = 0; i < input.length; i++) {
    if (input[i] instanceof Array) {
      flag = true;
      num.push(recursiveMax(input[i]));
    }
  }
  if (flag) {
    return Math.max.apply(null, num) + 1;
  } else {
    return 1
  }
}
var res = recursiveMax([0,[2],[2,[3]]]) - 1;
var res = recursiveMax([1,2,[3,[1,[0]]]]) - 1;
console.log(res) // 4
复制代码

题目反思

  • 这道题目是递归的经典用法,必须熟练掌握。
  • 使用标识符对元素进行标记,来辅助递归是解决递归问题的关键思路。
  • 使用Math.max.apply(num),可以求出一个数组中的最大值。
相关文章
|
1月前
|
前端开发 JavaScript 网络协议
前端最常见的JS面试题大全
【4月更文挑战第3天】前端最常见的JS面试题大全
50 5
|
4月前
|
设计模式 前端开发 算法
No210.精选前端面试题,享受每天的挑战和学习
No210.精选前端面试题,享受每天的挑战和学习
No210.精选前端面试题,享受每天的挑战和学习
|
8天前
|
前端开发 JavaScript 开发者
【Web 前端】数组迭代的方法有哪些?
【4月更文挑战第22天】【Web 前端】数组迭代的方法有哪些?
|
8天前
|
前端开发 JavaScript 索引
【Web 前端】数组的基本操作方法?
【4月更文挑战第22天】【Web 前端】数组的基本操作方法?
|
8天前
|
前端开发 JavaScript 索引
【Web 前端】说一说伪数组和数组的区别?
【4月更文挑战第22天】【Web 前端】说一说伪数组和数组的区别?
|
2月前
|
存储 缓存 监控
2024年春招小红书前端实习面试题分享
春招已经拉开帷幕啦! 春招的拉开,意味着新一轮的求职大战已经打响,希望每位求职者都能充分准备,以最佳的状态迎接挑战,找到心仪的工作,开启职业生涯的新篇章。祝愿每位求职者都能收获满满,前程似锦!
80 3
|
2月前
|
前端开发 数据可视化 安全
2024金三银四必看前端面试题!简答版精品!
2024金三银四必看前端面试题!2w字精品!简答版 金三银四黄金期来了 想要跳槽的小伙伴快来看啊
91 3
|
2月前
|
存储 缓存 Java
什么!?实战项目竟然撞到阿里面试的原题!???关于MyBatis Plus的缓存机制
什么!?实战项目竟然撞到阿里面试的原题!???关于MyBatis Plus的缓存机制
|
2月前
|
前端开发 小程序
前端get请求参数包含数组的情况
前端get请求参数包含数组的情况
43 0
|
2月前
|
存储 算法
【数据结构与算法】【腾讯阿里链表面试题】算法题--链表易懂版讲解
【数据结构与算法】【腾讯阿里链表面试题】算法题--链表易懂版讲解