如何使用Ramda将对象中的两个子数组合并为单一数组?
Ramda实现数组合并方案
Ramda里有多种方式可以完成你需要的数组合并需求:
- 直接使用
R.concat
和你原生的concat逻辑完全一致,写法如下:
const data = { t1: [ {"a": 1, "a1": 2}, {"b": 3, "b1": 4}, {"c": 5, "c1": 6} ], t2: [ {"d": 2}, {"e": 2}, {"f": 2} ] } const join = R.concat(data.t1, data.t2);
- 批量合并(适配多数组属性场景)
如果后续你的对象可能新增更多数组类型的属性,不想手动逐个指定t1、t2,可以用更灵活的方式:
- 先用
R.values提取对象的所有数组值,再通过R.flatten展平成一维数组:
const join = R.flatten(R.values(data));
- 或者用
R.reduce结合R.concat,把所有数组合并到初始空数组中:
const join = R.reduce(R.concat, [], R.values(data));
- 也可以用
R.unnest,它专门用来展开一层嵌套数组,写法更简洁:
const join = R.unnest(R.values(data));
以上几种方式最终都能生成你需要的目标数组。
内容的提问来源于stack exchange,提问作者franco phong
相关产品推荐
相关产品推荐

