实现数组的扁平化

devtools/2025/2/4 14:48:52/

文章目录

  • 1 实现数组的扁平化
    • 1.1 递归
    • 1.2 reduce
    • 1.3 扩展运算符
    • 1.4 split和toString
    • 1.5 flat
    • 1.6 正则表达式和JSON

1 实现数组的扁平化

1.1 递归

通过循环递归的方式,遍历数组的每一项,如果该项还是一个数组,那么就继续递归遍历,实现数组的每一项的连接。

javascript">let arr = [1, [2, [3, 4, 5]]];function flatten(arr) {let result = [];for (let i = 0; i < arr.length; i++) {if (Array.isArray(arr[i])) {result = result.concat(flatten(arr[i]));} else {result.push(arr[i]);}}return result;
}
flatten(arr);

1.2 reduce

简化第1种方法的代码,用reduce()来实现数组的拼接。

javascript">function flatten(arr) {return arr.reduce(function(prev, next) {return prev.concat(Array.isArray(next) ? flatten(next) : next);}, []);
}

1.3 扩展运算符

扩展运算符和some()的方法共同使用,逐层展开数组

javascript">function flatten(arr) {while (arr.some(item => Array.isArray(item))) {arr = [].concat(...arr);}return arr;
}

1.4 split和toString

先用toString()数组转换成用逗号分隔的字符串,然后再用split()方法把字符串重新转换为数组

javascript">function flatten(arr) {return arr.toString().split(',');
}

1.5 flat

ES6中flat方法的语法:arr.flat([depth])

其中depth是可以传递数组的展开深度,默认是1,即展开1层数组

如果层数不确定,参数可以传进Infinity,代表不论多少层都要展开。

javascript">function flatten(arr) {return arr.flat(Infinity);
}

1.6 正则表达式和JSON

先用JSON.stringify()的方法将数组转换为字符串,然后通过正则表达式过滤掉字符串中的数组的方括号,最后再利用JSON.parse()把它转换成数组

javascript">function flatten(arr) {let str = JSON.stringify(arr);str = str.replace(/(\[|\])/g, '');str = '[' + str + ']';return JSON.parse(str);
}

http://www.ppmy.cn/devtools/156029.html

相关文章

自定义数据集 ,使用朴素贝叶斯对其进行分类

数据集定义&#xff1a; - data 列表包含了文本样本及其对应的情感标签。每个元素是一个元组&#xff0c;第一个元素是文本&#xff0c;第二个元素是标签。 特征提取&#xff1a; - 使用 CountVectorizer 将文本转换为词频向量。 fit_transform 方法在训练数据上拟合向量器…

如何在 Typecho 中实现 Joe 编辑器标签自动填充

如何在 Typecho 中实现 Joe 编辑器标签自动填充 在 Typecho 的文章编辑过程中&#xff0c;如果你使用 Joe 编辑器&#xff0c;可能会希望输入#标签后能自动提取并填充到文章的标签输入框中&#xff0c;以提高工作效率。接下来&#xff0c;我们将详细介绍如何通过开发一个 Type…

选择排序_75. 颜色分类

75. 颜色分类 - 力扣&#xff08;LeetCode&#xff09; 题目不追求稳定 可以选择选择排序 这是我没看教程代码之前写的 有点复杂了 我还把元素后移了 class Solution { public:void sortColors(vector<int>& nums) {int min_num_index -1;int min_num 3;for(int i…

MySQL常用数据类型和表的操作

文章目录 (一)常用数据类型1.数值类2.字符串类型3.二进制类型4.日期类型 (二)表的操作1查看指定库中所有表2.创建表3.查看表结构和查看表的创建语句4.修改表5.删除表 (三)总代码 (一)常用数据类型 1.数值类 BIT([M]) 大小:bit M表示每个数的位数&#xff0c;取值范围为1~64,若…

手机连接WIFI可以上网,笔记本电脑连接WIFI却不能上网? 解决方法?

原因&#xff1a;DNS受污染了 解决办法 step 1&#xff1a;清空域名解析记录&#xff08;清空DNS&#xff09; ipconfig /flushdns (Windows cmd命令行输入) step 2&#xff1a;重新从DHCP 获取IP ipconfig /release&#xff08;释放当前IP地址&#xff09; ipconfig /renew &…

Spark SQL读写Hive Table部署

个人博客地址&#xff1a;Spark SQL读写Hive Table部署 | 一张假钞的真实世界 官网参考文档&#xff1a;Hive Tables。 本文使用的组件版本如下&#xff1a; Spark 3.1.2Hive 3.1.2 第一步&#xff1a;Hive部署 在所有Worker节点上部署Hive。主要是使用Hive下面的libs。 …

02.04 数据类型

请写出以下几个数据的类型&#xff1a; 整数 a ----->int a的地址 ----->int* 存放a的数组b ----->int[] 存放a的地址的数组c ----->int*[] b的地址 ----->int* c的地址 ----->int** 指向printf函数的指针d ----->int (*)(const char*, ...) …

整形的存储形式和浮点型在计算机中的存储形式

在计算机科学的底层世界里&#xff0c;数据存储是基石般的存在。不同数据类型&#xff0c;如整形与浮点型&#xff0c;其存储方式犹如独特的密码&#xff0c;隐藏着计算机高效运行的秘密。理解它们&#xff0c;是深入掌握编程与计算机原理的关键。 一、整形的存储形式 原码、反…