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对象