繁体   English   中英

Ramda Groupby 数组为 arrays

[英]Ramda Groupby with array of arrays

我有类似下面的数据

[
   ['A', 'B', 'C', 'D', 'E'], 
   ['A', 'F', 'C', 'D', 'E'],
   ['A', 'B', 'C1', 'D1', 'E1'],
   ['A', 'F', 'C1', 'D1', 'E1'],
]

如果我用第一个索引从 ramda 分组,它会给出如下所示的内容

cosnt groupdByRows = R.groupBy((row) => row[1], rows)

{
  B: [[A,B,C,D,E]]
  F: [[A,F,C,D,E]]
}

我希望结果包括重复的行以及如下所示


{
  B: [[A,B,C,D,E], [A,B,C1,D1,E1]]
  F: [[A,F,C,D,E],[A,F,C1,D1,E1] ]
}

我如何使用 Ramda 实现这一目标?

我不喜欢 rambda,因为它的类型有缺陷并且 package 大小不好。

所以这是 fnxt 实现

npm i fnxt和:

import {groupBy, map} from 'fnxt/array';
import {pipe} from 'fnxt/pipe';

let x = [
  ['A', 'B', 'C', 'D', 'E'],
  ['A', 'F', 'C', 'D', 'E'],
  ['A', 'B', 'C1', 'D1', 'E1'],
  ['A', 'F', 'C1', 'D1', 'E1'],
];    

let result = pipe(
  groupBy((e:string[]) => e[1]),
  map((e)=> [e[0][1],e]),
  Object.fromEntries
)(x);

console.log(result)

//{
//  B: [ [ 'A', 'B', 'C', 'D', 'E' ], [ 'A', 'B', 'C1', 'D1', 'E1' ] ],
//  F: [ [ 'A', 'F', 'C', 'D', 'E' ], [ 'A', 'F', 'C1', 'D1', 'E1' ] ]
//}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM