Javascript 如何使用Lodash将阵列划分为多个组?

Javascript 如何使用Lodash将阵列划分为多个组?,javascript,lodash,Javascript,Lodash,我试图找到一种简洁的方法,根据谓词将对象数组划分为数组组 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:

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

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'}
];
我明白了,这为使用普通JS提供了一个很好的概述,但我想知道是否有更简洁的方法使用lodash来实现这一点?我看到了,但它只将阵列分成2个组(需要是“n”个分区)。通过键将其分组到一个对象中,我正在寻找相同的,但在一个数组中(没有键)


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

您可以首先按
id
进行分组,这将生成一个对象,其中键是
id
的不同值,值是具有该id的所有数组项的数组,这基本上就是您想要的(仅用于获取值数组):


谢谢我不知道uz.values()函数
// "regular" version
var partitionedById = _.values(_.groupBy(arr, 'id'));

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