Javascript 获取对象中最后一个最深级别的项

Javascript 获取对象中最后一个最深级别的项,javascript,lodash,Javascript,Lodash,我有如下数据和函数: const lodash = require('lodash') var data = [ { "nextStep": [ { "nextStep": [ { "nextStep": [ { "nextStep": [], "student": { "name":

我有如下数据和函数:

const lodash = require('lodash')

var data = [
  {
    "nextStep": [
      {
        "nextStep": [
          {
            "nextStep": [
              {
                "nextStep": [],
                "student": {
                  "name": "Alice",
                  "grade": 1
                }
              }
            ],
            "student": {
              "name": "Lisa",
              "grade": 2
            }
          }
        ],
        "student": {
          "grade": 3,
          "name": "This is GS"
        }
      }
    ],
    "student": {
      "grade": 4,
      "name": "Paul"
    }
  }
]


function searchByJsonPath(path, obj, target) {
  for (var k in obj) {
      if (obj.hasOwnProperty(k))
          if (k === target)
              return path;
          else if (typeof obj[k] === "object") {
              var result = searchByJsonPath(path + "." + k, obj[k], target);
              if (result)
                  return result;
          }
  }
  return false;
}
我想得到对象中的最后一项,结果应该是

  "name": "Alice",
  "grade": 1
因此,我调用
searchByJsonPath
来获取路径,并使用lodash来获取项目

test = searchByJsonPath('data', data, 'name');
但是
test=data.0.nextStep.0.nextStep.0.nextStep.0.student

正确的路径应该是
数据[0]。下一步[0]。下一步[0]。下一步[0]。学生


请告诉我。

您可以尝试下面的
递归
来获取最深的元素

var data=[{“nextStep”:[{“nextStep”:[{“nextStep”:[{“nextStep”:[],学生:{“name”:“Alice”,“grade”:1}}],学生:{“name”:“Lisa”,“grade”:2},“学生”:{“年级”:3,“姓名”:“这是GS”}}],“学生”:{“年级”:4,“姓名”:“保罗”}]
函数getData(obj){
返回obj.nextStep.length>0
?获取数据(对象下一步[0])
:obj.学生
}

log(getData(data[0]))
这个问题中没有JSON。这里有一个Javascript对象