首页 > 编程语言 > 详细

JavaScript数组平坦化的实现

时间:2021-04-09 16:25:06      阅读:26      评论:0      收藏:0      [点我收藏+]

JavaScript数组平坦化的实现

1.递归

 1 let flatten = function (array, res) {
 2     for (let element of array) {
 3         if (element instanceof Array) {
 4             flatten(element, res);
 5         } else {
 6             res.push(element);
 7         }
 8     }
 9     return res;
10 }
11 
12 let res = [];
13 let array = [[1,2],3,[[1,2],[3,4]]];
14 let flattenArray = flatten(array, res);
15 console.log(flattenArray); // 1,2,3,1,2,3,4

2.扩展运算符

  扩展运算符可以将二维数组平坦化为一维数组,我们可以通过扩展运算符与数组的some方法完成数组的平坦化。some()方法类似于数学上的“存在”量词,只要数组中有任何一个元素让断言函数返回true,那么some就会返回true。我们可以通过some()方法判断数组中是否还有被嵌套的数组,如果有就使用扩展运算符将被嵌套的数组展开,然后继续判断是否存在数组,最后将被嵌套的数组层层展开。

 1 let flatten = function (array) {
 2     while (array.some(element => element instanceof Array)) {
 3         array = [].concat(...array);
 4     }
 5     return array;
 6 }
 7 
 8 array = [1,2,[3,4],[[5],[6]]];
 9 res = flatten(array);
10 console.log(res); //1,2,3,4,5,6

3.reduce

1 let flatten = function (array) {
2     return array.reduce((result, element)=> {
3         return result.concat(Array.isArray(element) ? flatten(element) : element);
4     }, []);
5 }
6 
7 array = [1,2,[3,4],[[5],[6]]];
8 res = flatten(array);
9 console.log(res); //1,2,3,4,5,6

4.使用flat()

  数组的flat()方法可以打平“一级嵌套”,即原始数组中本身也是数组的元素将被“展开”一次,但展开后的元素如果还是数组则不会再展开了。如果想要将数组完全平坦化,可以将Infinity作为flat的参数,即将展开的层数设置为无穷大。

1 array = [1,2,[3,4],[[5],[6]]];
2 console.log(array.flat(Infinity)); //1,2,3,4,5,6

5.使用toString()

 1 let flatten = function (array) {
 2     return array.toString().split(",").map(
 3         element => {
 4             return parseInt(element);
 5         }
 6     )
 7 }
 8 array = [1,2,[3,4],[[5],[6]]];
 9 res = flatten(array);
10 console.log(res); //1,2,3,4,5,6

 

  

JavaScript数组平坦化的实现

原文:https://www.cnblogs.com/ccpeng/p/14636659.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!