为什么箭头函数返回未定义

时间:2020-06-09 01:35:13

标签: javascript node.js recursion undefined

我正在编写一个仅在Json模式中循环的函数。假设我们有一个简单的json模式,例如:

    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"]
            }
          }
        }
      }
    }
  }
}

我们正在尝试从中收集键对象的类型。这是搜索CAR类型的函数,应返回=>“ object”

parseObjectProperties = (obj)=> {
  for (var k in obj) {
    if(k === "CAR"){
     console.log(_.values(obj[k])[0][0]) // When I do a console log like this prin the object value
     return  _.values(obj[k])[0][0] // but in return i get undefined 
      }
    if ( _.isObject( obj[k]) && !_.isNil(obj[k])) {
    return  parseObjectProperties(obj[k])
    } 
  }
}


parseObjectProperties(foo);

当我运行它时,内部console.log(_。values(obj [k])[0] [0])显示正确的值:object

但是如果我运行它

console.log(parseObjectProperties(foo));

我明白了

undefined

为什么函数不能正确返回正确的值=>“ object”?

谢谢!

1 个答案:

答案 0 :(得分:2)

由于我不了解您使用的逻辑,所以我只是重新写了一下。这样可以解决您的问题吗?

仅供参考,您的对象CAR有一个名为type的属性,其值是一个包含“ object”和“ null”两个值的数组,因此如果要获取“对象”作为结果。

obj[k].type[0]