gpt4 book ai didi

javascript递归查找不返回

转载 作者:行者123 更新时间:2023-11-28 06:39:08 25 4
gpt4 key购买 nike

我正在尝试编写一个函数来搜索对象中的元素并返回其父数组。这段代码看起来应该可以工作,但它只返回未定义,有人可以解释为什么吗?

findInArray = function(el, obj) {

if(Array.isArray(obj)){

obj.forEach(function(element) {
if(element === el) {

return obj;

} else if (typeof element === 'object' && obj) {

return findInArray(el, element);
}
})

} else if(typeof obj === 'object' && obj) {

for(prop in obj) {

if(typeof obj[prop] === 'object' && obj) {

return findInArray(el, obj[prop]);
}
}
}

}

最佳答案

您没有从第一个 if block 返回:

if(Array.isArray(obj)){
obj.forEach(...)
}

因此该函数返回未定义。如果你想返回回调返回的值,你必须重构你的代码。

看来Array#reduce这里比较合适:

return obj.reduce(function(result, element) {
if (result) {
return result;
}
if(element === el) {
return obj;
}
if (typeof element === 'object' && obj) {
return findInArray(el, element);
}
}, null);

关于javascript递归查找不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34003083/

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