Javascript 从对象数组中的数组中返回值

Javascript 从对象数组中的数组中返回值,javascript,arrays,Javascript,Arrays,//结构 常量定义={ 章节:[ {title:'Section A',actions:[{id:0,name:'action A'}]}, {title:'Section B',actions:[{id:1,name:'action B'}]}, ] }; //用于检索操作的代码 常数id=1; const sectionDef=definitions.sections.find(s=>s.actions.find(a=>a.id==id)); const actionDef=sectionD

//结构
常量定义={
章节:[
{title:'Section A',actions:[{id:0,name:'action A'}]},
{title:'Section B',actions:[{id:1,name:'action B'}]},
]
};
//用于检索操作的代码
常数id=1;
const sectionDef=definitions.sections.find(s=>s.actions.find(a=>a.id==id));
const actionDef=sectionDef.actions.find(a=>a.id==id);
//打印出来

console.log(actionDef)您的代码在
const sectionDef=definitions.find
上有错误,应该是
const sectionDef=definitions.sections.find
,因为
find
适用于数组类型。你现在的做法很好,可以达到预期的效果

const定义={
章节:[
{title:'Section A',actions:[{id:0,name:'action A'}]},
{title:'Section B',actions:[{id:1,name:'action B'}]},
]
}
常数id=1;
const sectionDef=definitions.sections.find(s=>s.actions.find(a=>a.id==id));
const actionDef=sectionDef.actions.find(a=>a.id==id);
控制台日志(sectionDef);
console.log(actionDef)
const定义={
章节:[
{title:'Section A',actions:[{id:0,name:'action A'}]},
{title:'Section B',actions:[{id:1,name:'action B'}]},
]
}
常数id=1;
var结果2;
var数据=定义。部分;
var结果=数据过滤器(函数(obj){
var data2=对象操作;
result2=data2.filter(函数(obj){
返回obj.id==id;
});
});

console.log(result2)您可以使用递归方法,使用对象的所有值在任意数据结构中进行搜索

函数查找(对象、键、值){
var结果;
if(对象[键]==值){
返回对象;
}
if(object&&typeof object==='object'){
一些(o=>result=find(o,key,value));
}
返回结果;
}
var定义={sections:[{title:'Section A',actions:[{id:0,name:'action A'}]},{title:'Section B',actions:[{id:1,name:'action B'}]}};
log(查找(定义'id',0));

log(查找(定义'id',1))
您可以使用
数组。forEach
数组。find

//结构
常量定义={
章节:[
{title:'Section A',actions:[{id:0,name:'action A'}]},
{title:'Section B',actions:[{id:1,name:'action B'}]},
]
};
//用于检索操作的代码
常数id=1;
让我们行动起来;
定义.sections.forEach(section=>{
action=section.actions.find(a=>a.id==id);
});
//打印出来

控制台日志(操作)
定义
是一个对象。我不确定您是如何对其执行
find()
方法的。这个方法只对数组进行迭代。@MohammadUsman,代码被修改了,我的错