我正在尝试编写一个函数来搜索对象中的元素并返回其父数组。这段代码看起来应该可以工作,但是只返回未定义的代码,有人可以解释为什么吗?
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
街区返回:
if(Array.isArray(obj)){
obj.forEach(...)
}
因此函数返回undefined
。如果要返回回调返回的值,则必须重组代码。
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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句