根据指定的深度平铺一个数组。
每次递归,使 depth
减 1 。使用 Array.reduce()
和 Array.concat()
来合并元素或数组。默认情况下, depth
等于 1
时停递归。省略第二个参数 depth
,只能平铺1层的深度 (单层平铺)。
const flattenDepth = (arr, depth = 1) => depth != 1 ? arr.reduce((a, v) => a.concat(Array.isArray(v) ? flattenDepth(v, depth - 1) : v), []) : arr.reduce((a, v) => a.concat(v), []);
flattenDepth([1, [2], 3, 4]); // [1,2,3,4]
更多代码 JavaScript 实用代码片段 请查看 https://www.7psus5.com/30-seconds-of-code/
最新评论
写的挺好的
有没有兴趣翻译 impatient js? https://exploringjs.com/impatient-js/index.html
Flexbox playground is so great!
感谢总结。
awesome!
这个好像很早就看到类似的文章了
比其他的教程好太多了
柯理化讲的好模糊…没懂