扁平化数组(多层嵌套)

2023-11-19

方法一:

var arr=[1,[2,[3,[4,5]]]];

function flatten(arr){

var len=arr.length;

var temp=[];

for(var i=0;i<len;i++){

if(Array.isArray(arr[i])){

var child=flatten(arr[i]);

temp=temp.concat(child)

}else{

temp.push(arr[i]);

}

}

return temp;

}

console.log(flatten(arr))

方法二:(es6)

const flatten=arr=>arr.reduce((a,b)=>a.concat(Array.isArray(b)?flatten(b):b),[])

控制扁平的层数:

depth为1是因为它不走递归,多层才递归

function flatten(arr,depth){

var len=arr.length;

var temp=[];

    if(depth===1){

     for(var i=0;i<len;i++){

     if(Array.isArray(arr[i])){

     for(var j=0,len1=arr[i].length;j<len1;j++){

     temp.push(arr[i][j]);

     }

     }

     }

    }else{

        for(var i=0;i<len;i++){

    if(Array.isArray(arr[i])&&depth){

    temp=temp.concat(flatten(arr[i],depth--));

    }else{

    temp.push(arr[i])

    }

    }



    }

    return temp;

}

var arr = [1, 2, [3, 4],[5, 6, [7, 8, [12, 13]], 9], 10, 11];

console.log(flatten(arr,1));

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

扁平化数组(多层嵌套) 的相关文章

  • VUE常用UI组件插件及框架-vue前端UI框架收集

    UI组件及框架 element 饿了么出品的Vue2的web UI工具套件 mint ui Vue 2的移动UI元素 iview 基于 Vuejs 的开源 UI 组件库 Keen UI 轻量级的基本UI组件合集 vue material 通
  • Java jar包启动及停止

    此处以SpringBoot maven工程为基础 基于Windows系统 工程开发好后 打包成jar包 一 启动jar包 在包所在的目录下运行cmd命令 执行命令 java jar jar包名 二 停止 1 用管理员打开cmd命令窗口 2
  • Java安全之SSL/TLS

    在前面所讲到的一些安全技术手段如 消息摘要 加解密算法 数字签名和数据证书等 一般都不会由开发者直接地去使用 而是经过了一定的封装 甚至形成了某些安全协议 再暴露出一定的接口来供开发者使用 因为直接使用这些安全手段 对开发者的学习成本太高
  • 初学树莓派——(六)树莓派安装OpenCV及USB摄像头配置

    目录 1 安装OpenCV 1 1前言 1 2换源及源内容更新 1 3安装依赖 1 4下载whl包 1 5安装OpenCV 1 6检查安装 2 USB摄像头配置 同时检查OpenCV安装情况 2 1前言 2 2Python调用cv2库来检查
  • sem_init函数用法

    sem init函数 sem init函数是Posix信号量操作中的函数 sem init 初始化一个定位在 sem 的匿名信号量 value 参数指定信号量的初始值 pshared 参数指明信号量是由进程内线程共享 还是由进程之间共享 如
  • 最优化算法概述以及常见分类

    1 最优化问题概述 通俗的来说 最优化问题就是在一定的条件约束下 使得效果最好 最优化问题是一种数学问题 是研究在给定的约束之下如何求得某些因素的量 来使得某一指标达到最优的学科 工程设计中最优化问题的一般说法是 选择一组参数 在满足一系列
  • 数据结构笔记(六)——散列(Hash Table)之散列函数(1)

    散列表 hash table 的实现叫做散列 hashing 这是以常数平均时间O 1 进行插入 删除和查找的技术 散列表没有顺序 需要元素间排序信息的操作 如findMin findMax不会得到有效支持 就是这东西不是这么用的 你可以实
  • RocketMq顺序发送消息

    错乱消息出现的原因 1 在RocketMq为啥消息不是按照顺序来的呢 首先您需要了解 队列是一个先进先出的一个数据的结构 生产者 您可以将topic理解为里面有一个一个的队列 你将一个消息发送到topic的时候 当前的消息不一定是往当前的这
  • win 10 搭建FTP服务,并使用的FTP进行传输文件(很详细)

    1 安装IIS工具 打开控制面板 点击 程序 点击 启用或关闭Windows功能 找到 internet information services 全部都选上 如下图 点击 确定 会出现以下页面 点击 关闭 即可 2 设置开机启动FTP服务
  • 高光谱图像中的Hughes(休斯)现象

    注解 在高光谱图像的分析中 随着参与运算波段数目的增加 分类精度 先增后降 的现象 场景 高光谱影像 由于维数的大幅度增加 在深度学习中 可以理解成模型提取的特征维数的增加 导致用于参数训练的所需样本数也急剧增加 如果样本数过少 那么估计出
  • Fiddler 详尽教程与抓取移动端数据包

    转载自 http blog csdn net qq 21445563 article details 51017605 阅读目录 1 Fiddler 抓包简介 1 字段说明 2 Statistics 请求的性能数据分析 3 Inspecto
  • C++面试题目集合(持续跟新)

    与我前面写的C语言进阶知识点遥相呼应 这才是C 面试 网上的面试题有些太简单了 C 面试题目最多集中在对象的内存模型 记住了 如果用c c 内存都不清楚 还写个屁的程序 1 C 的虚函数是怎样实现的 C 的虚函数使用了一个虚函数表来存放了每
  • 我的世界服务器物品不掉落指令是什么,我的世界死亡物品怎么不掉落 我的世界物品不掉落指令...

    我的世界死亡不了多指令是gamerulekeepInventorytrue 玩家们要注意我的世界死亡不掉落指令默认是关闭状态的哦 死亡不掉落指令在 我的世界 游戏里面就是当玩家们死亡以后仍然保留其物品栏中的所有物品 包括附魔死亡消失魔咒的物
  • 安装WSL + zsh & Pure (ZSH prompt) 美化【Windows11】

    文章目录 前言 WSL 安装 ZSH 安装ZSH Pure ZSH prompt 安装插件 下载插件 编辑配置文件 插件作用 啊 PS 如果在启动过程中提示 请启用虚拟机平台 windows 功能并确保在 bios 中启用虚拟化 前言 之前
  • 数据分析36计(28):Python 使用 Flask+Docker, 100行代码内实现机器学习实时预测​...

    本文的想法是快速轻松地构建 Docker 容器 Python 以使用 Flask 实现机器学习模型执行在线预测 API 我们将使用 Docker 和 Flask RESTful 实现线性判别分析和多层感知器神经网络模型的实时预测 项目包括的
  • Android中的自绘View的那些事儿(八)之 Paint的高级用法

    我们在 Android中的自绘View的那些事儿 一 中简单介绍过Paint和Canvas的一些常用方法和实例使用 其中 一句话提到Paint中有方法 setStrokeCap setStrokeJoin 和 setPathEffect 今
  • nodejs如何利用libuv实现事件循环和异步

    本文是根据之前在公司内部做的分享整理而成 是早期对nodejs的一个认识 源码版本10 x nodejs是什么 libuv的工作原理 nodejs的工作原理 nodejs如何使用libuv实现事件循环和异步 1 nodejs是什么 Node
  • pyinstaller打包最小体积安装python程序 命令行传参执行

    文章目录 创建虚拟环境 进入虚拟环境安装库 pycharm配置虚拟环境 pycharm 打开terminal进入虚拟环境 运行参数传入 sys argv 是获取运行python文件的时候命令行参数 且以list形式存储参数 打包后的文件运行
  • js记录密码出错次数并锁定账号30分钟

    下面要说的是网站中一个常见的功能 在客人使用抵用券或者其他来支付的时候需要验证密码 如果密码输入错误5次就锁定 不在让客人使用抵用券了 在这里是使用的cookie来实现的 不太严谨 思路很简单 在输入密码错误的时候 使用cookie保存2个
  • 基于vue项目的上拉刷新,下拉加载的效果

    使用插件 better scroll 安装使用教程http ustbhuangyi github io better scroll doc installation html npm 还是看官网比较好 子组件

随机推荐

  • 28_content 阶段的 index 模块

    文章目录 content 阶段的 index 模块 显示目录内容 content 阶段的 autoindex 模块 autoindex 模块的指令 index autoindex 示例配置 content 阶段的 index 模块 ngx
  • 6、基于STM32呼吸灯(PWM)

    之前定时器中有提到输入和输出比较部分 https blog csdn net qq 45764141 article details 125286260 参考有江科大自化协的视频和正电原子的视频 这个文章主要讲输出部分 文章目录 一 OC
  • 全面解析并实现逻辑回归(Python)

    本文以模型 学习目标 优化算法的角度解析逻辑回归 LR 模型 并以Python从头实现LR训练及预测 一 逻辑回归模型结构 逻辑回归是一种广义线性的分类模型且其模型结构可以视为单层的神经网络 由一层输入层 一层仅带有一个sigmoid激活函
  • MiniUI - 快速开发WebUI

    http www miniui com index html
  • GPT4来了?10秒钟做一个网站

    GPT4来了 10秒钟做一个网站 好了 我可以像雪容融一样躺平了 为什么雪容融都会wei gui 言归正传 3月15日 GPT4做一个网站只要十秒 登上热搜 根据视频中的演示 首先在草稿纸上画出一个基本的网页框架 图源视频截图 过了仅仅10
  • 【小沐学C++】C++ 常用命令行开发工具(Linux)

    文章目录 1 简介 2 gcc g 2 1 system 执行shell 命令 2 2 popen 建立管道I O 2 3 vfork exec 新建子进程 3 clang 3 1 下载和安装clang 3 2 clang和gcc比较 3
  • Blow Up 3macOS图片放大锐利的详细使用教程与安装方法

    软件介绍 Blow Up 3 macOS是一个Photoshop和Lightroom插件 亲测有效 适合于Adobe Photoshop CS6和Adobe Photoshop CC 2015或更高版本 Adobe Lightroom 6或
  • VsCode远程调试服务器python代码(解决相对路径相关问题)

    1 首先在本地使用VsCode调试python代码 可参考链接 VSCode启动Debug模式调试Python文件 2 vscode远程连接服务器 调试python文件 可参考链接 一文掌握vscode远程调试python代码 3 调试时
  • Google guava之Multiset简介说明

    转自 Google guava之Multiset简介说明 下文笔者讲述guava中Multiset集合的简介说明 如下所示 guava之Multiset集合简介 Multiset集合 可用于存储重复元素 Multiset是ArrayList
  • 一文1000字彻底搞懂Web测试与App测试的区别

    总结分享一些项目需要结合Web测试和App测试的工作经验给大家 从功能测试区分 Web测试与App测试在测试用例设计和测试流程上没什么区别 而两者的主要区别体现在如下几个方面 1 系统结构方面 Web项目 B S架构 基于浏览器的 Web测
  • Unity编辑器界面概述

    了解界面 如果您对编辑器界面没有非常地了解 那么请花一些时间查看并熟悉 Editor 编辑器 界面 Editor 主窗口由选项卡式窗口组成 这些窗口可重新排列 因此 Editor 的外观可能因项目或者开发者而异 具体取决于个人偏好 Wind
  • GitHub博客搭建

    git官网文档 https git scm com book zh v2 E6 9C 8D E5 8A A1 E5 99 A8 E4 B8 8A E7 9A 84 Git E7 94 9F E6 88 90 SSH E5 85 AC E9
  • mmdetection入门介绍-train.py解析

    四 train py解析 同样 上面有单GPU测试和多GPU测试 其实上面的测试是由训练导致的 单GPU训练 python tools train py CONFIG FILE 如果要在命令中指定工作目录 则可以添加参数 work dir
  • Oracle数据泵、exp/imp工具导入导出数据

    一 最常用导出导入方案 exp imp命令工具 1 ssh工具连接服务器主机 exp命令导出 1 1将数据库全部数据导出 exp system password TestDB file bak dmp log exp log full y
  • Vue 弹出层时 禁止页面滑动

    页面中加顶部蒙层 发现滑动时底部页面内容会正常滚动 一 移动端 直接在蒙层所在div上加 touchmove prevent就好了 div class masktop div 二 PC端 显示弹层调用stop 否则调用move stop 滑
  • 华为OD机试真题- 阿里巴巴找黄金宝箱(V)-2023年OD统一考试(B卷)

    题目描述 一贫如洗的樵夫阿里巴巴在去砍柴的路上 无意中发现了强盗集团的藏宝地 藏宝地有编号从0 N的箱子 每个箱子上面贴有一个数字 阿里巴巴念出一个咒语数字k k
  • leaflet geojson行政区域展示

    目录 获取geoJson数据 下载数据 获取本地json数据 L poylgan绘制图形 效果展示 完整代码 获取geoJson数据 下载数据 阿里云上下载不了的话 我把json数据放在网盘了 链接 百度网盘 请输入提取码 提取码 ifso
  • vue+django项目部署

    vue django项目部署 部署相关概念 项目服务器架构 反向代理 前端部署 docker docker安装 mac 使用常见命令 nginx 下载安装nginx镜像 域名解析 后端部署 MySQL镜像 Redis镜像 部署前处理 从服务
  • C语言:求最小值

    强数据版本 大佬写 include
  • 扁平化数组(多层嵌套)

    方法一 var arr 1 2 3 4 5 function flatten arr var len arr length var temp for var i 0 i