gpt4 book ai didi

javascript - 递归 .find() 返回错误的对象

转载 作者:行者123 更新时间:2023-12-04 01:00:53 26 4
gpt4 key购买 nike

递归 .find() 有一个小问题。当我用它来查找 ID === 2 时,它返回的是 ID === 1 的对象 ...

一直摸不着头脑,不明白为什么会这样

我的对象和这个类似

更新:调试时,它似乎确实在正确的对象处结束,但最终返回给出正确对象的父对象,而不是实际对象

{ID: 1,
children: [
{ID:2,
children: [
{ID:4,
children: [...]},
]},
{ID:3,
children: [...]},
]}
  findItem(ID: number, items: Agenda[] = this.getItems()){
const foundItem = items.find(a => {
if (ID === a.ID) {
return a;
} else {
return this.findItem(ID, a.children);
}
})
return foundItem;
}

最佳答案

.find()将始终从外部数组返回元素——它只需要回调函数返回 true——与 true 来自哪里无关(在本例中为嵌套数组)。如果您想遍历嵌套数组,您应该使用常规的 for...of:

let data = [{ID: 1,
children: [
{ID:2,
children: [
{ID:4,
children: []},
]},
{ID:3,
children: []},
]}]

function findItem(ID, items) {
for(let a of items){
if (ID === a.ID) {
return a;
} else {
return findItem(ID, a.children);
}
}
}

console.log(findItem(2,data))

关于javascript - 递归 .find() 返回错误的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59349869/

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