Javascript 为什么箭头函数返回未定义
我正在编写一个函数,它只是在Json模式中循环。假设我们有一个简单的json模式,例如:Javascript 为什么箭头函数返回未定义,javascript,node.js,recursion,undefined,Javascript,Node.js,Recursion,Undefined,我正在编写一个函数,它只是在Json模式中循环。假设我们有一个简单的json模式,例如: var foo = { "description": "A car schema", "type": "object", "properties": { "_id": { "type": "string" }, "_rev": { "type": "string" }, "sources": { "type":
var foo = {
"description": "A car schema",
"type": "object",
"properties": {
"_id": {
"type": "string"
},
"_rev": {
"type": "string"
},
"sources": {
"type": "object",
"properties": {
"mam": {
"type": "object",
"properties": {
"source_id": {
"type": [ "integer", "null" ]
},
"SOR": {
"type": ["boolean","null"]
}
}
},
"sas": {
"type": "object",
"properties": {
"source_id": {
"type": "string"
},
"SOR": {
"type": ["boolean","null"]
},
"CAR": {
"type": ["object","null"]
}
}
}
}
}
}
}
我们正在尝试从中收集密钥对象的类型。下面是搜索汽车类型应返回=>“对象”的函数
当我运行它时,内部console.log(j.values(obj[k])[0][0])显示正确的值:object
但如果我运行它
console.log(parseObjectProperties(foo));
我明白了
为什么函数不能正确返回正确的值=>“object”
谢谢大家! 我只是重新写了这篇文章,因为我不理解您使用的逻辑。这能解决你的问题吗 仅供参考,您的对象CAR有一个名为
type
的属性,其值是一个数组,其中包含两个值,“object”和“null”,因此您希望使用obj[k]。如果希望得到“object”,请键入[0]
const parseObjectProperties=(obj)=>{
var结果=null;
用于(obj中的var k)
如果(k==“CAR”)返回obj[k],则键入[0];
else if(对象的obj[k]实例)
结果=parseObjectProperties(obj[k]);
返回结果;
}
变量foo={
“描述”:“汽车模式”,
“类型”:“对象”,
“财产”:{
“_id”:{
“类型”:“字符串”
},
“_rev”:{
“类型”:“字符串”
},
“资料来源”:{
“类型”:“对象”,
“财产”:{
“妈妈”:{
“类型”:“对象”,
“财产”:{
“来源id”:{
“类型”:[“整数”,“空”]
},
“SOR”:{
“类型”:[“布尔”,“空”]
}
}
},
“sas”:{
“类型”:“对象”,
“财产”:{
“来源id”:{
“类型”:“字符串”
},
“SOR”:{
“类型”:[“布尔”,“空”]
},
“汽车”:{
“类型”:[“对象”,“空”]
}
}
}
}
}
}
}
log(parseObjectProperties(foo))
这是一个典型的递归错误,忘记了返回递归调用。您需要返回parseObjectProperties(obj[k])我添加了返回值,但仍然是相同的错误。请匹配您当前拥有的内容。这是添加返回到``返回parseObjectProperties(obj[k])后更新的代码。@MohamedEshaftri真棒,很高兴提供帮助!你能点击左边的复选标记接受我的答案吗?谢谢
console.log(parseObjectProperties(foo));
undefined