【问题标题】:How to partition array into multiple groups using Lodash?如何使用 Lodash 将数组划分为多个组?
【发布时间】:2016-08-22 22:30:28
【问题描述】:

我试图找到一种简洁的方法来根据谓词将对象数组划分为数组组。

var arr = [
  {id: 1, val: 'a'}, 
  {id: 1, val: 'b'}, 
  {id: 2, val: 'c'}, 
  {id: 3, val: 'a'}
];

//transform to below

var partitionedById = [
  [{id: 1, val: 'a'}, {id: 1, val:'b'}], 
  [{id: 2, val: 'c'}], 
  [{id: 3, val: 'a'}
];

我看到 this question ,它使用纯 JS 提供了一个很好的概述,但我想知道是否有使用 lodash 的更简洁的方法来做到这一点?我看到了partition function,但它只将数组分成两组(需要它是'n'个分区)。 groupBy 通过键将它分组到一个对象中,我正在寻找相同的对象,但在一个数组中(没有键)。

有没有更简单的方法可以嵌套几个 lodash 函数来实现这一点?

【问题讨论】:

    标签: javascript lodash


    【解决方案1】:

    您可以首先按id 分组,这将产生一个对象,其中键是id 的不同值,值是具有该id 的所有数组项的数组,这基本上是您想要的(使用_.values() 只获取值数组):

    // "regular" version
    var partitionedById = _.values(_.groupBy(arr, 'id'));
    
    // chained version
    var partitionedById = _(arr).groupBy('id').values().value();
    

    【讨论】:

    • 谢谢!不知道 _.values() 函数
    猜你喜欢
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 2019-08-31
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多