首页 > 其他分享 >使用JS写一个方法计算嵌套数组的深度

使用JS写一个方法计算嵌套数组的深度

时间:2025-01-04 10:34:47浏览次数:1  
标签:arr JS 嵌套 depth 数组 深度 getArrayDepth

你可以使用递归函数来计算嵌套数组的深度。以下是一个使用JavaScript编写的示例方法,用于计算嵌套数组的深度:

function getArrayDepth(arr) {
  if (!Array.isArray(arr)) {
    return 0; // 如果不是数组,返回深度0
  }

  let maxDepth = 0;
  for (let i = 0; i < arr.length; i++) {
    const depth = getArrayDepth(arr[i]); // 递归计算每个元素的深度
    maxDepth = Math.max(maxDepth, depth); // 更新最大深度
  }

  return maxDepth + 1; // 返回当前深度(最大深度+1)
}

// 示例用法:
const nestedArray = [1, [2, [3, [4]], 5], [6, 7]];
const depth = getArrayDepth(nestedArray);
console.log(`嵌套数组的深度为:${depth}`); // 输出:嵌套数组的深度为:4

在这个示例中,getArrayDepth函数接受一个数组作为参数。它首先检查参数是否为数组,如果不是,则返回深度0。然后,它遍历数组的每个元素,并递归地调用自身来计算每个元素的深度。在每次递归调用后,它使用Math.max函数更新当前的最大深度。最后,它返回当前深度,即最大深度加1。

标签:arr,JS,嵌套,depth,数组,深度,getArrayDepth
From: https://www.cnblogs.com/ai888/p/18651624

相关文章

  • 你是怎么理解js是异步的?
    JavaScript(JS)被描述为异步的,这主要指的是它处理某些操作(如网络请求、定时任务等)的方式,这些操作不会立即完成,而是需要一些时间。在这些操作进行期间,JavaScript不会阻塞或等待它们完成,而是继续执行后续的代码。这种特性使得JavaScript能够更有效地利用计算资源,特别是在处理I/O(输......
  • 使用js写一个方法计算字符串的长度,英文算半个
    在前端开发中,如果你想要计算字符串的长度,并且希望英文字符算作半个长度,你可以使用JavaScript编写一个函数来实现这个功能。下面是一个示例函数,它遍历字符串中的每个字符,检查字符是否为英文字符(这里假设英文字符是指ASCII码在32到126之间的字符,包括空格),并据此计算长度:functioncal......
  • js的方法sort默认是按什么方式排序的?
    在JavaScript中,Array.prototype.sort()方法用于对数组的元素进行排序。然而,sort()方法的默认排序方式并不是纯数字排序,而是将数组元素转换为字符串,然后基于字符的Unicode码点进行排序。这意味着,如果你有一个数字数组并直接使用sort()方法,你可能会得到非预期的结果。例如:cons......
  • 写一个方法对数组对象的某几个key进行排序
    在前端开发中,JavaScript是一种常用的语言,我们可以使用其数组的sort()方法来对数组对象的特定key进行排序。以下是一个简单的示例,假设我们有一个对象数组,并且我们想要根据对象的agekey对其进行排序:functionsortByKey(array,key){returnarray.sort((a,b)=>(a[k......
  • 使用js写一个方法判断数组是否为等差数组
    等差数组是指数组中任意两个相邻元素的差值都相等的数组。下面是一个使用JavaScript编写的函数,该函数可以判断一个数组是否为等差数组:functionisArithmeticArray(arr){if(arr.length<2){//如果数组长度小于2,那么它不能被视为等差数组returnfalse;......
  • 使用js实现保留两位小数的方法有哪些?
    在JavaScript中,你可以通过多种方式实现保留两位小数。以下是一些常见的方法:toFixed()方法toFixed()是JavaScript的Number对象的一个方法,它可以将数字格式化为指定小数位数的字符串。letnum=123.456;letresult=num.toFixed(2);//"123.46"注意,toFixed()方法......
  • FJSP:部落竞争与成员合作算法(Competition of tribes and cooperation of members ,CTCM)
    一、柔性作业车间调度问题柔性作业车间调度问题(FlexibleJobShopSchedulingProblem,FJSP),是一种经典的组合优化问题。在FJSP问题中,有多个作业需要在多个机器上进行加工,每个作业由一系列工序组成,每个工序需要在特定的机器上完成。同时,每个机器一次只能处理一个工序,且每个工......
  • (免费源码)计算机毕业设计必学必看 万套实战教程 java、python、php、node.js、c#、APP
    摘 要本论文主要论述了如何使用SSM框架开发一个网络课程系统,将严格按照软件开发流程进行各个阶段的工作,采用B/S架构Java技术,面向对象编程思想进行项目开发。在引言中,将论述网络课程系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析......
  • (免费源码)计算机毕业设计必学必看 万套实战教程 java、python、php、node.js、c#、APP
    摘 要随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设健康饮食推荐系统。本设计主要实现集人性化、高效率、便捷等优点于一身的健康饮......
  • C++中的字符( char )、字符数组( char[] )、字符串( std::string )
    字符(char)定义:char是C++中的基本数据类型,用于表示单个字符。char在内存中通常占用一个字节(8位)。在ASCII编码系统中,每个字符都对应一个唯一的整数值,char类型可以存储这些值来表示相应的字符。charch='A';//存储字符'A'与其他类型的联系:字符本质上是一个小整数类......