【问题标题】:Ramda Groupby with array of arrays带有数组数组的 Ramda Groupby
【发布时间】:2023-01-23 03:13:52
【问题描述】:

我有类似下面的数据

[
   ['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 实现此目的?

【问题讨论】:

  • 你真的有tried this吗?看起来对我有用。

标签: javascript arrays ramda.js


【解决方案1】:

我不喜欢 rambda,因为它的类型有缺陷而且包装尺寸也不好。

所以这是 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' ] ]
//}

【讨论】:

    猜你喜欢
    • 2021-06-19
    • 2018-03-13
    • 2018-04-01
    • 2019-04-12
    • 2021-11-08
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 2018-12-15
    相关资源
    最近更新 更多