javascript - Ramda 减少字符串来替换前一个

标签 javascript ramda.js

我有一个想要使用 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/

相关文章:

javascript - 使用 Ramda 执行子数组的函数式方法

javascript - 展平数组,但使用子数组作为基础

javascript - Javascript 中是否可以进行元编程?

javascript - 糟糕的 Node js API 性能,使用率非常低

jquery方式的Javascript继承

javascript - Ramda.js - propEq(String → a → Object → Boolean) - 这个符号是什么意思?

javascript - 使用 javascript(或 css,如果可能的话更好)通过鼠标(或在移动设备中触摸)更改元素的大小,而不考虑 jquery ui

javascript - 如何从其他子域发送一个子域的综合浏览量

javascript - 使用 Ramda 将 id 数组映射到具有这些 id 的对象

javascript - Ramda.js 组合两个共享相同属性 ID 的对象数组