Javascript Lodash从嵌套对象中提取值
我有下面的对象,我目前正在循环通过它来获取项目值。目前我正在使用lodash u0.forEach来实现这一点。我不确定用项目名称作为键,值作为值来创建新对象的最佳方法是什么Javascript Lodash从嵌套对象中提取值,javascript,lodash,extract,Javascript,Lodash,Extract,我有下面的对象,我目前正在循环通过它来获取项目值。目前我正在使用lodash u0.forEach来实现这一点。我不确定用项目名称作为键,值作为值来创建新对象的最佳方法是什么 data = [ { "panels" : [ { "title": "Panel 1", "items" : [ { "name": item1, "va
data = [
{
"panels" : [
{
"title": "Panel 1",
"items" : [
{
"name": item1,
"value": 1
}
{
"name": item2,
"value": 2
}
]
},
{
"title": "Panel 2",
"items" : [
{
"name": item3,
"value": 3
}
{
"name": item4,
"value": 5
}
]
}
]
}
{
"panels" : [
{
"title": "Panel 3"
"items" : [
{
"name": item5,
"value": 5
}
{
"name": item6,
"value": 6
}
]
}
]
}
]
let values = [];
_.forEach(data, (groups) => {
_.forEach(groups.panels, (panel) => {
_.forEach(panel.items, (item) => {
values[item.name] = item.value;
});
});
});
return values;
有没有其他更有效的方法来实现这一点?您可以使用嵌套循环和
const data=[{panels:[{title:“Panel 1”,items:[{name:“item1”,value:1},{name:“item2”,value:2}}},{title:“Panel 2”,items:[{name:“item3”,value:3},{name:“item4”,value:5},{panels:[{name:“item5”,value:5},{name:“item6}]}];
常量输出={};
用于(数据的const{panels})
用于(面板的常量{items})
for(项的常量{name,value})
输出[名称]=值;
console.log(输出)
非常感谢您,这是一个很好的解决方案。如果有任何变化,您可以帮助我回答与此相关的其他问题。非常感谢您的帮助。@user4676307您可以使用链接的flatMap
获取项目,然后使用find
对项目数组进行搜索const found=data.flatMap(o=>o.panels).flatMap(p=>p.items).find(o=>o.name===“name”)
或者您可以使用答案中提到的for…of
循环,只要找到匹配项,就在链接的问题中添加答案