一道题目实现js多维数组扁平化。类似这种效果:
1 | [1,[2, 3],[4, 5, 6], [7, 8, 9,0]] -> [1,2,3,4,5,6,7,8,9,0] |
以下就提供几种数组扁平化的方法:
1、concat方法
1 | var dimensionalArr = [1,[2, 3],[4, 5, 6], [7, 8, 9,0]] |
2、ES6的reset参数…
1 | var dimensionalArr = [1,[2, 3],[4, 5, 6], [7, 8, 9,0]] |
3、reduce concat,在网上查了下api,reduce这个ES5的方法我一直不咋用
1 | // 递归, 适用于三维及以上 |
4、后来自己又google了一下,lodash和underscore都有现成的方法flattern,并且在多层嵌套的情况也有对应的方法flatternDeep。1
2
3
4
5
6
7var array = [1, [2, [3, [4]], 5]];
_.flattenDepth(array, 1);
// => [1, 2, [3, [4]], 5]
_.flattenDepth(array, 2);
// => [1, 2, 3, [4], 5]