我有一个想要使用 ramda 减少的字符串列表:
["red blue green", "pink blue green", "red orange green", "red blue black"]
我想减少列表,这样我就剩下:
"pink orange black"
因此本质上只是替换与前一个字符串的差异,而不覆盖整个字符串。
步骤应该是:
"red blue green"
"pink blue green"
"pink orange green"
"pink orange black"
这是我目前拥有的:
const strings = ["red blue green", "pink blue green", "red orange green", "red blue black"]
const replaceString = (old, acc) => R.replace(old, acc, acc)
R.reduce(replaceString, R.head(strings))
最佳答案
我有代码可以从初始数据中获取您想要的答案。但我真的不知道它是否能解决您的普遍问题:
const colors = ["red blue green", "pink blue green", "red orange green", "red blue black"];
const fn = pipe(
map(split(' ')), // [['red', 'blue', 'green'], ['pink', 'blue' 'green'],
// ['red', 'orange', 'green'], ['red' 'bluee', 'black']]
flatten, // ['red', 'blue', 'green', 'pink', 'blue' 'green',
// 'red', 'orange', 'green', 'red' 'bluee', 'black']
countBy(identity), // {red: 3, blue: 3, green: 3, pink: 1, orange: 1, black: 1}
filter(equals(1)), // {pink: 1, orange: 1, black: 1}
keys, // ['pink', 'orange', 'black'
join(' ') // 'pink orange black'
)
fn(colors); //=> 'pink orange black'
您可以在 Ramda REPL 上看到此操作的实际效果。 。
关于javascript - Ramda 减少字符串来替换前一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42660825/