前言

array-flatten用于对数组进行降维.

使用

1
2
const { flatten } = require("array-flatten"); // 降维数组
console.log(flatten([1, [2, 666, [3, [4, [5], 6], 7], 8], 9]));

附录源码

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
31
32
33
34
35
36
37
38
39
40
41
// 指定深度展开
function flattenWithDepth (array, result, depth) {
for (var i = 0; i < array.length; i++) {
var value = array[i]

// 判断是否到了指定的深度 或者 当前数组是否已经全部展开
if (depth > 0 && Array.isArray(value)) {
flattenWithDepth(value, result, depth - 1)
} else {
result.push(value)
}
}

return result
}

// 全部展开
function flattenForever (array, result) {
for (var i = 0; i < array.length; i++) {
var value = array[i]

if (Array.isArray(value)) {
flattenForever(value, result)
} else {
result.push(value)
}
}

return result
}

function arrayFlatten (array, depth) {
if (depth == null) {
return flattenForever(array, [])
}

return flattenWithDepth(array, [], depth)
}

console.log(arrayFlatten([1, [2, [3, [4, [5], 6], 7], 8], 9], 2));
console.log(arrayFlatten([1, [2, 666, [3, [4, [5], 6], 7], 8], 9]));

总结

  1. 可以直接将源码拷到项目里使用 0.0;
  2. 使用TS的记得使用它自带的声明文件 >_>;