Javascript 使用递归函数迭代嵌套对象,返回未定义的
我需要迭代一个嵌套函数并找到与我想要的键相同的子对象。代码如下:Javascript 使用递归函数迭代嵌套对象,返回未定义的,javascript,reactjs,recursion,ecmascript-6,nested-object,Javascript,Reactjs,Recursion,Ecmascript 6,Nested Object,我需要迭代一个嵌套函数并找到与我想要的键相同的子对象。代码如下: const searchObject = (obj, label) => { const object = Object.keys(obj).forEach(key => { if(label === key) { return obj[key]; } else if(typeof obj[key] === "object
const searchObject = (obj, label) => {
const object = Object.keys(obj).forEach(key => {
if(label === key) {
return obj[key];
} else if(typeof obj[key] === "object") {
const value = searchObject(obj[key], label);
if(value) return value;
}
});
return object;
};
我搜索了很多,发现很多人都推荐这种方法,但我不知道为什么我在登录console.log(searchObject(obj,“Intercept”)时会得到未定义的。(我正在使用React框架)
您将在
.forEach
内返回。这是行不通的。需要注意的一点是null也有一种“object”,因此您可能也需要检查它。为什么不在这里发布数据对象,至少是一个示例?不幸的是,map()并没有解决这个问题。大多数时候,它返回未定义的数组,有时它有我正在寻找的对象。但这不应该是正确的方法。您可能需要Array#find
。你能把你的输入和预期的输出作为一个标签吗?
const searchObject = (obj, label) => {
var object = {}
Object.keys(obj).forEach(key => {
if(label === key) {
object = obj[key];
} else if(typeof obj[key] === "object") {
const value = searchObject(obj[key], label);
if(value) object = return value;
}
});
return object;
};