gpt4 book ai didi

javascript - JS 递归查找父子数组中的元素

转载 作者:行者123 更新时间:2023-12-01 00:07:05 25 4
gpt4 key购买 nike

我有一个带有嵌套父子结构的数组。我需要递归地遍历这个数组并找到想要的元素。我写了这个函数:

recursivelyFindElementByCondition(nodes, isSatisfyingCondition) {

function recursiveCheck(items) {
for (const item of items) {
if (isSatisfyingCondition(item)) {
return item;
}

if (item.rows) {
recursiveCheck(item.rows)
}
}
}

return recursiveCheck(nodes);
}

但我不明白为什么它返回未定义。据我了解,它应该可以正常工作。我知道有一种方法可以创建超出递归函数范围的变量并向其分配元素,然后最终返回它,只是想在没有不必要的变量的情况下执行此操作,并且不知道为什么上面的方法不起作用。

最佳答案

必须返回递归调用的结果,以便它传播到调用点并作为结果返回。

function findNode(nodes, predicate) {
for (const node of nodes) {
if (predicate(node)) return node

if (node.rows) {
let match = findNode(node.rows, predicate)
if (match) return match
}
}
}

const tree = [{
value: 'a',
rows: [{
value: 'b'
}]
}, {
value: 'c',
rows: [{
value: 'd',
rows: [{
value: 'e'
}]
}]
}]

const result = findNode(tree, ({value}) => value === 'e')

console.log(result)

关于javascript - JS 递归查找父子数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60306227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com