20190727算法题-降维数组

算法题目:

已知如下数组:

1
var arr = [[1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];

要求1: 将多维数组降成一维数组

方法一: es6的flat()

1
arr.flat(3);

方法二: 投机取巧

1
arr.toString().split(',');

或者

1
arr.join().split(',');

方法三: 递归

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function flat (arr) {
let result = [];
function _flat (arr) {
arr.map(function (value, index) {
if (Array.isArray(value)) {
_flat(value)
}else {
result.push(value)
}
})
}
_flat(arr)
return result;
}
flat(arr)

简写:

1
let flat = arr => [].concat(...arr.map(v => Array.isArray(v) ? flat(v) : v))