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,代码被修改了,我的错