Javascript 从嵌套的复杂对象获取特定对象
我有一个下面的json,想要得到id=111的对象,深度可能因json而异Javascript 从嵌套的复杂对象获取特定对象,javascript,performance,underscore.js,lodash,javascript-objects,Javascript,Performance,Underscore.js,Lodash,Javascript Objects,我有一个下面的json,想要得到id=111的对象,深度可能因json而异 object = [ { id= 1, name : 'a', childNodes : [ { id=11, name:'aa', childNode
object = [
{
id= 1,
name : 'a',
childNodes : [ {
id=11,
name:'aa',
childNodes:[{
id: 111,
name:'aaaa',
childNodes:[]
}]
}]
}]
所需输出{id:111,名称:'aaaa',子节点:[]}
寻找最快的算法或方法。数据将非常庞大,超过35000个节点,深度可达20
任何帮助都将不胜感激。您可以使用
for…in
循环为此创建递归函数
var object=[{“id”:1,“name”:“a”,“childNodes”:[{“id”:11,“name”:“aa”,“childNodes”:[{“id”:111,“name”:“aaaa”,“childNodes”:[]}]}},{“id”:2,“name”:“a”,“childNodes”:[{“id”:22,“name”:“aa”,“childNodes”:[{“id”:123,“name”:“aaaa”,“childNodes”:[]}]}]}]
函数findById(数据,id){
用于(数据中的var i){
var结果;
if(data.id==id)返回数据
if(type of data[i]=“object”&(result=findById(data[i],id)))返回结果
}
}
console.log(findById(object,111))
log(findById(object,22))
您可以使用for…in
循环为此创建递归函数
var object=[{“id”:1,“name”:“a”,“childNodes”:[{“id”:11,“name”:“aa”,“childNodes”:[{“id”:111,“name”:“aaaa”,“childNodes”:[]}]}},{“id”:2,“name”:“a”,“childNodes”:[{“id”:22,“name”:“aa”,“childNodes”:[{“id”:123,“name”:“aaaa”,“childNodes”:[]}]}]}]
函数findById(数据,id){
用于(数据中的var i){
var结果;
if(data.id==id)返回数据
if(type of data[i]=“object”&(result=findById(data[i],id)))返回结果
}
}
console.log(findById(object,111))
log(findById(object,22))
这里是一个递归函数,使用some
:
函数findNested(arr,id){
var-res;
返回arr.some(o=>res=Object(o).id==id?o
:findNested(o.childNodes,id))&&res;
}
变量对象=[{
id:1,
名称:‘a’,
子节点:[{
id:11,
姓名:'aa',
子节点:[{
id:111,
名称:"aaaa",,
子节点:[]
}]
}]
}];
log(findNested(object,111));
log(findNested(object,9))代码>这里有一个递归函数,它使用了some
:
函数findNested(arr,id){
var-res;
返回arr.some(o=>res=Object(o).id==id?o
:findNested(o.childNodes,id))&&res;
}
变量对象=[{
id:1,
名称:‘a’,
子节点:[{
id:11,
姓名:'aa',
子节点:[{
id:111,
名称:"aaaa",,
子节点:[]
}]
}]
}];
log(findNested(object,111));
log(findNested(object,9))代码>对象中是否存在任何可预测的结构?例如,如果父母的ID以1开头,孩子的ID以1开头,我们不能断言或依赖于此。关于结构唯一可以确定的是,它们都是唯一的ID,还是您希望返回一个包含所有具有匹配ID的对象的数组?是的,它们是唯一的ID,并且正在查找具有特定ID的对象。对象中是否有任何可预测的结构?例如,如果父项的ID以1开头,子项的ID以1开头,很抱歉,我们不能断言或依赖于此。关于结构,唯一确定的是它们都是唯一的ID,还是希望返回一个包含所有具有匹配ID的对象的数组?是的,它们是唯一的ID,我正在寻找具有特定ID的对象。