You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Ramda JS按索引数组将数组拆分为字典形式子数组?

在Ramda中按索引数组分组为字典子数组

给定示例输入:

const arr = ["A", "B", "C", "D", "E"];
const indices = [0, 0, 1, 0, 3];

期望输出:

{ "0": ["A", "B", "D"], "1": ["C"], "3": ["E"] }

Ramda可以通过组合几个核心函数优雅实现这个需求,代码如下:

const splitByIndices = R.pipe(
  R.zip,
  R.groupBy(R.head),
  R.map(R.pluck(1))
);

// 调用方式
splitByIndices(indices, arr); // 得到目标结果

分步解释:

  • R.zip(indices, arr):将索引数组和原数组的对应元素配对,生成二维数组 [[0, 'A'], [0, 'B'], [1, 'C'], [0, 'D'], [3, 'E']]
  • R.groupBy(R.head):以每个配对的第一个元素(索引值)为键,将相同索引的配对分组,得到 {0: [[0,'A'], [0,'B'], [0,'D']], 1: [[1,'C']], 3: [[3,'E']]}
  • R.map(R.pluck(1)):遍历分组后的对象,提取每个组内配对的第二个元素(原数组的元素),最终生成目标字典结构

由于Ramda函数默认支持柯里化,也可以分两次传参调用:

splitByIndices(indices)(arr); // 同样得到目标结果

内容的提问来源于stack exchange,提问作者Adam B.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 21:45:34