我是靠谱客的博主 重要高山,这篇文章主要介绍扁平化数组:多维数组转化为一维数组,现在分享给大家,希望可以做个参考。

扁平化数组:多维数组转化为一维数组

文章目录

    • 扁平化数组:多维数组转化为一维数组
      • 方法一:递归实现
      • 方法二:reduce函数
      • 方法三:扩展运算符
      • 方法四:split&toString
      • 方法五(推荐):传入参数,决定扁平阶数

方法一:递归实现

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const a = [1, [2, [3, [4, 5]]]]; const flatten = (arr) => { let result = []; for (let i = 0; i < arr.length; i++) { if (Array.isArray(arr[i])) { //concat方法进行拼接 result = result.concat(flatten(arr[i])); // console.log(result) } else { result.push(arr[i]); } } return result; };

方法二:reduce函数

复制代码
1
2
3
4
5
6
const flatten1 = (arr) => { return arr.reduce((prev, next) => { return prev.concat(Array.isArray(next) ? flatten(next) : next); }, []); };

方法三:扩展运算符

复制代码
1
2
3
4
5
6
7
8
9
10
const flatten2 = (arr) => { //some方法把数组中仍然是组数的项过滤出来 while (arr.some((item) => Array.isArray(item))) { arr = [].concat(...arr); console.log(arr); } return arr; }; console.log(flatten2(a));

方法四:split&toString

复制代码
1
2
3
4
5
6
const flatten3 = (arr) => { return arr.toString().split(","); }; // console.log(flatten3(a));

方法五(推荐):传入参数,决定扁平阶数

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Array.prototype._flat = function (n) { let result = []; let num = n; for (let item of this) { // 如果是数组 if (Array.isArray(item)) { n--; // 没有扁平化的空间 直接推入 if (n < 0) { result.push(item); } // 继续扁平化 并将n传入 决定item这一个数组中的扁平化 else { result.push(...item._flat(n)); } } // 不是数组直接推入 else { result.push(item); } // 每次循环 重置n 为传入的参数 因为每一项都需要扁平化 需要进行判断 n = num; } return result; }; let arr = [1, 2, [3, 4], [5, 6, [7, 8]]]; let res = arr._flat(1); console.log(res); // [ 1, 2, 3, 4, 5, 6, [ 7, 8 ] ]

这段时间将不断更新–》手撕js系列,如果对你有帮助帮小编,点个赞,加个关注哈。

最后

以上就是重要高山最近收集整理的关于扁平化数组:多维数组转化为一维数组的全部内容,更多相关扁平化数组内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部