Javascript Lodash从嵌套对象中提取值

Javascript Lodash从嵌套对象中提取值,javascript,lodash,extract,Javascript,Lodash,Extract,我有下面的对象,我目前正在循环通过它来获取项目值。目前我正在使用lodash u0.forEach来实现这一点。我不确定用项目名称作为键,值作为值来创建新对象的最佳方法是什么 data = [ { "panels" : [ { "title": "Panel 1", "items" : [ { "name": item1, "va

我有下面的对象,我目前正在循环通过它来获取项目值。目前我正在使用lodash u0.forEach来实现这一点。我不确定用项目名称作为键,值作为值来创建新对象的最佳方法是什么

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
循环,只要找到匹配项,就在链接的问题中添加答案