首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用lodash .groupBy。如何对对象内部的对象进行分组

使用lodash .groupBy。如何对对象内部的对象进行分组
EN

Stack Overflow用户
提问于 2016-11-30 16:19:41
回答 1查看 10K关注 0票数 0

我正在使用lodash的_.groupBy来得出以下数据:

代码语言:javascript
复制
{
   "Generic Drugs":[
                      {
                          itemDes: "Dulcolax",
                          itemGeneric: "Bisacodyl",
                          price: '10'
                      },
                      {
                          itemDes: "Celine",
                          itemGeneric: "Ascorbic Acid",
                          price: '10'
                      },
                          {
                          itemDes: "Vitamic C",
                          itemGeneric: "Ascorbic Acid",
                          price: '10'
                      }
                   ],
  "None-generic Drugs" : [
                           {
                             itemDes: "test 1",
                             itemGeneric: "",
                             price: '10'
                           },
                           {
                             itemDes: "test 2",
                             itemGeneric: "",
                             price: '10'
                           }                                 
                   ]
}

我想通过属性itemGeneric对通用药物对象中的对象进行分组,得到如下输出:

代码语言:javascript
复制
{
   "Generic Drugs":[
                      "Ascorbic Acid" : [  
                                          { itemDes: "Celine" }, 
                                          { itemDesc: "Vitamin C" }
                                        ],
                      "Bisacodyl" : [
                                       { itemDes: "Dolculax" } 
                                    ]
  "None-generic Drugs" : [
                           {
                             itemDes: "test 1",
                             itemGeneric: "",
                             price: '10'
                           },
                           {
                             itemDes: "test 2",
                             itemGeneric: "",
                             price: '10'
                           }                                 
                   ]
}

请谁来帮我解决这个问题。谢谢你的回答。:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-30 17:28:02

对分组后的数据使用_.mapValues(),并按“itemGeneric”对每个值进行分组:

代码语言:javascript
复制
_.mapValues(grouped, function(group, key) {
      return key === 'Generic Drugs' ? _.groupBy(group, 'itemGeneric') : group;
});

代码语言:javascript
复制
var grouped = {
  "Generic Drugs": [{
    itemDes: "Dulcolax",
    itemGeneric: "Bisacodyl",
    price: '10'
  }, {
    itemDes: "Celine",
    itemGeneric: "Ascorbic Acid",
    price: '10'
  }, {
    itemDes: "Vitamic C",
    itemGeneric: "Ascorbic Acid",
    price: '10'
  }],
  "None-generic Drugs": [{
    itemDes: "test 1",
    itemGeneric: "",
    price: '10'
  }, {
    itemDes: "test 2",
    itemGeneric: "",
    price: '10'
  }]
};

var result = _.mapValues(grouped, function(group, key) {
      return key === 'Generic Drugs' ? _.groupBy(group, 'itemGeneric') : group;
});

console.log(result);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.2/lodash.min.js"></script>

如果原始数据项如下所示:

代码语言:javascript
复制
  {
      type: "Generic Drugs",
      itemDes: "Dulcolax",
      itemGeneric: "Bisacodyl",
      price: '10'
  }

您可以执行以下操作:

代码语言:javascript
复制
_(originalData).groupBy('type').mapValues(grouped, function(group, key) {
    return key === 'Generic Drugs' ? _.groupBy(group, 'itemGeneric') : group;
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40883389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档