如何使用 Ramda.js 连接数组中的字符串

How to concatenate strings in an array of array with Ramda.js

给定一个二维字符串矩阵,我想根据它们的位置连接子列表中的元素。

例如给定此数据结构作为输入:

[['x','y' ,'z'],['A', 'B', 'C'], ['a', 'b', 'c']]

算法将产生输出:

['xAa', 'yBb', 'zCc']

我尝试了 R.transpose,但它让我明白了 [['x','A','a'], ['y', 'B', 'b'], ['z', 'C', 'c']],但是我找不到连接嵌套字符串的方法。

我也尝试了 R.zipWith,但它看起来并不理想,因为 R.zipWith 只接受两个参数,所以我需要应用它两次才能获得输出。

我想你离得不远。

使用 transpose 你设法得到了这个:

[['x','A','a'], ['y', 'B', 'b'], ['z', 'C', 'c']]

然后你只需要映射这个数组数组并将它们连接起来。

例如

const {compose, map, join, transpose } = R
const concat_arr = compose(map(join("")), transpose);
const result = concat_arr([['x','y' ,'z'],['A', 'B', 'C'], ['a', 'b', 'c']]);
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.1/ramda.min.js"></script>

其中composemapjointranspose都是Ramda函数。

  1. 初始输入为transpose
  2. transpose(arr) 的结果被提供给 map(join("")),它将 join("") 应用于所有子数组