想象一下,我有一个包含项数组的项,而数组中的任何项都包含项数组,依此类推。 所以我有无限个项目,我想知道如何在node.js中找到所有项目。 像这样:
Item1
/ \
Item2 Item3
/ \
Item4 Item5
Item1是一个数组。 Item2和Item3还有另一个数组,依此类推。
答案 0 :(得分:0)
我有一个包含一系列项目的项目...我想知道如何获取所有项目
如果是数组,则递归展平数组中的每个元素,否则追加它。
/* setup test input */
const tree = [
"leaf_A_1",
"leaf_A_2",
[
"leaf_B_1",
"leaf_B_2",
[
"leaf_C_1",
"leaf_C_2",
]
]
]
console.log("INPUT:\n", tree)
/* run test */
const leaves = flatten(tree)
console.log("OUTPUT:", leaves) // outputs leaf nodes in a flat array
// flatten() is a recursive function takes an array that *may* contain nested arrays, and returns an array containing all leaf elements without nesting.
function flatten(arr) {
return arr.reduce(expandNestedArraysOrAppend, [])
}
function expandNestedArraysOrAppend(accum, element, idx) {
if (Array.isArray(element)) {
return [...accum, ...flatten(element)] // if we have an array, flatten it before appending
}
return [...accum, element] // if not an array, just append
}
希望这会有所帮助。干杯!