如何使用 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>
其中compose
、map
、join
和transpose
都是Ramda函数。
- 初始输入为
transpose
transpose(arr)
的结果被提供给 map(join(""))
,它将 join("")
应用于所有子数组
给定一个二维字符串矩阵,我想根据它们的位置连接子列表中的元素。
例如给定此数据结构作为输入:
[['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>
其中compose
、map
、join
和transpose
都是Ramda函数。
- 初始输入为
transpose
transpose(arr)
的结果被提供给map(join(""))
,它将join("")
应用于所有子数组