2017-03-08 15 views
0

我有一個字符串的這個名單,我想用ramda減少: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)) 
+1

最終結果不會是「紅藍黑」嗎? –

+0

你能解釋一下你在每一步看到的結果嗎?我無法理解您從輸入到您的建議輸出的方式。 –

+0

當然,已經提前更新過了。 – gosseti

回答

2

我有代碼,讓你從最初的數據想要的答案。但我真的不知道,如果它解決您的一般問題:

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

+0

這很好用,謝謝!從一開始就減少絕對是錯誤的。 – gosseti