首页 > 其他分享 >扁平化数组的方法

扁平化数组的方法

时间:2024-03-20 12:01:01浏览次数:26  
标签:flat arr const 扁平化 newArr 数组 方法

1、flat() 方法将以指定的深度递归遍历数组,并将所有元素与遍历的子数组中的元素合并到一个新数组中以返回。

const arr = [1,[2,[3,[4,5]]],6]
//  方法一:数组自带的扁平化方法,flat的参数代表的是需要展开几层,如果是Infinity的话,就是不管嵌套几层,全部都展开
console.log(arr.flat(Infinity))

2、使用正则

  1. 首先是使用 JSON.stringify 把 arr 转为字符串
  2. 接着使用正则把字符串里面的 [ 和 ] 去掉
  3. 然后再拼接数组括号转为数组对象  

 

1 const arr = [1,[2,[3,[4,5]]],6]
2 const res = JSON.stringify(arr).replace(/\[|\]/g,'')
3 const res2 = JSON.parse('[' + res + ']')
4 console.log(res2)

  

3、使用递归

递归,在数学和计算机科学中,是指在函数的定义中使用函数本身的方法。递归这个词经常用来描述以自相似的方式重复事物的过程。通俗的理解是:我调用我自己。

const array = []
const  fn = (arr)=>{
    for(let i = 0;i<arr.length; i++){
        if(Array.isArray(arr[i])){
            fn(arr[i])
        }
        else {
            array.push(arr[i])
        }
    }
}
fn(arr)
console.log(array)

4、使用 reduce

reduce 方法: 可以用来给数组求和

concat() 方法用于连接两个或多个数组。

concat() 方法不会更改现有数组,而是返回一个新数组,其中包含已连接数组的值。

const newArr = (arr)=>{
            return arr.reduce((pre,cur)=>{
                return pre.concat(Array.isArray(cur) ? newArr(cur) : cur)
            },[])
        }
console.log(newArr(arr),"reduce方法")

5、使用栈的思想实现 flat 函数

// 栈思想
function flat(arr) {
const newArr = [];
const stack = [].concat(arr); // 将数组元素拷贝至栈,直接赋值会改变原数组//如果栈不为空,则循环遍历while (stack.length !== 0) {
const val = stack.pop(); // 删除数组最后一个元素,并获取它if (Array.isArray(val)) {
stack.push(...val); // 如果是数组再次入栈,并且展开了一层
} else {
newArr.unshift(val); // 如果不是数组就将其取出来放入结果数组中
}
}
return newArr;
}

let arr = [12, 23, [34, 56, [78, 90, 100, [110, 120, 130, 140]]]];
console.log(flat(arr));
// [12, 23, 34, 56, 78, 90, 100, 110, 120, 130, 140]

 

 

 

标签:flat,arr,const,扁平化,newArr,数组,方法
From: https://www.cnblogs.com/dingziDone/p/18084920

相关文章

  • 关于将U盘内容和模拟U盘固件放在一起的方法
    1、模拟U盘固件直接下载到开发板后,插上电脑,会识别到一个U盘,如下图 2、将要放入的内容拖到模拟的U盘,如下图,然后选择弹出U盘 3、通过WCH-LinkUtility读取MCU FLASH内容,读取地址要设置到最大,右击保存成新固件,如下图 4、下载最新保存的固件,模拟U盘打开,链接以及相关文件......
  • 开机设置自动mount nfs的最简单方法
    开机设置自动mountnfs的最简单方法背景公司里面很多存储其实使用的是nfs.为了保证可用,想着能够通过开机启动等方式进行挂载.这里其实不太建议使用fstab的方式进行.如果nfsserver出现了问题,可能会导致启动虚拟机变的非常缓慢.所以想法还是通过计划任务的方式来实现......
  • aardio教程三) 元表、元方法
    前言还有个迭代器,基础语法基本已经说完了,后面想到啥再补充,之后的教程会从以下方面来讲:基础库的使用,比如string、table等基础控件的使用,比如listview、tab等aardio和Python交互,比如给Python写个界面自带的范例程序我写的一些小程序当然,我的理解也是很基础的,特别是在界面设......
  • 安装Visual Studio 2022指定版本的方法
       去微软官网下载Fixedversionbootstrappers的安装工具即可。链接:https://learn.microsoft.com/en-us/visualstudio/releases/2022/release-history#updating-your-installation-to-a-specific-release   在这里找到你要的版本下载安装工具,这个工具启动后,会在安装......
  • console方法
    1.table()console.table():可以很轻松的将对象数组显示为表格,每个对象一行,每个属性一列。  2.trace()我们可以使用trace()来获取我们的调用堆栈,对于调试非常管用。  3.count() console.count()可以记录当前方法的调用次数。看下面这个示例可以使用co......
  • 提高 SQL Server 使用技巧的有效方法
    简介:在日益复杂的数据库环境中,有效地利用SQLServer是每个开发人员和数据库管理员的重要任务。本文将介绍一些实用的技巧,帮助你提高在SQLServer上的工作效率,并优化代码的可读性和性能。1.提高SQLServer存储过程可读性的技巧在SQLServer中编写存储过程时,保持......
  • Unity InputField实现框自适应内容简便方法
    要实现InputField框自适应输入内容,除了通过代码进行处理,还可以是使用以下简便的方法。1、创建InputField组件:右键->UI->InputField-TextMeshPro。2、把InputFieldSettings中的LineType设置为MultiLineNewline模式,如下图:3、添加ContentSizeFitter组件,并把Horizo......
  • java初体验———数组篇
        在编程的世界里,数组无疑是最基础且重要的一种数据结构。经过这段时间对数组的学习,我对其有了更深刻的理解和认识,也从中体会到了编程的魅力和乐趣。    数组的学习让我感受到了数据结构的魅力。数组作为一种线性数据结构,它的有序性和可索引性使得数据存储和......
  • C # 构造方法
    要点:构造函数:它是类的一种特殊方法,当我们要创建类的实例(即对象)时,构造函数就会被自动调用,用于初始化这个对象的状态。构造函数的名字与类名完全相同,并且它不会返回任何值。构造函数的作用:它的主要任务是初始化对象的成员变量,确保对象在创建时就处于正确的状态。无参构造函......
  • [数组练习题]二分法查找操作实例:使用二分法查找有序数组中元素。 找到返回索引,不存在
    文章目录题干一、题目分析1.定义数组,用于后续在数组中查找元素2.对数组进行排序3.定义方法4.调用方法,打印输出二、代码1.代码块2.一图流总结题干提示:这段是题干,仔细阅读仔细分析:二分法查找操作:使用二分法查找有序数组中元素。找到返回索引,不存在输出-1。......