如何使用lodash生成新结构?

时间:2017-12-22 19:42:24

标签: arrays object lodash

我需要帮助才能使用lodash生成新结构 我有这些数据:

items: [
    { color: 'Green', size: 'Large', style: 'Skinny' },
    { color: 'Blue', size: 'Small', style: 'Tapered' },
    { color: 'Red', size: 'Medium', style: 'Slim' },
    { color: 'Blue', size: 'Large', style: 'Tapered' },
  ];

但是我需要像Style那样的东西:

[
{
  group: 'Skinny',
  items: [
    { color: 'Green', size: 'Large', style: 'Skinny' }
  ]
}
{
  group: 'Tapered',
  items: [
     { color: 'Blue', size: 'Small', style: 'Tapered' },
     { color: 'Blue', size: 'Large', style: 'Tapered' }
  ]
}
{
  group: 'Slim',
  items: [
    { color: 'Red', size: 'Medium', style: 'Slim' }
  ]
}

谢谢

1 个答案:

答案 0 :(得分:0)

使用_.groupBy()收集对象,然后_.map()收集所需的表单:



var items = [
  { color: 'Green', size: 'Large', style: 'Skinny' },
  { color: 'Blue', size: 'Small', style: 'Tapered' },
  { color: 'Red', size: 'Medium', style: 'Slim' },
  { color: 'Blue', size: 'Large', style: 'Tapered' },
];

var result = _(items)
  .groupBy('style')
  .map(function(v, k) {
    return {
      group: k,
      items: v
    };
  })
  .value();
  
console.log(result);

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
&#13;
&#13;
&#13;