我的步驟的陣列,作爲一個例子的我將使用字母:減少的步驟的陣列,以更小的陣列
let steps=['f', 'b', 'c', 'd', 'x', 'h', 'i' ]
和合並函數,它需要兩個步驟,並返回一個合併步驟:如果它可以將它們合併或空,如果它不能作爲一個例子,將Concat的連續兩個字母:
function nextLetter(s){
return s.replace(/([a-zA-Z])[^a-zA-Z]*$/, function(a) {
var c= a.charCodeAt(0);
if (c===90 || c===122) return null; else return String.fromCharCode(++c);
}
});
}
// merge('x', 'a') -> null , marge('x', 'y') -> 'xy'
function mergeSteps(s1, s2) {
if (s2==nextLetter(s1)) return s1+s2; else return null;
}
我現在需要寫一個mergeStepsArray
功能,這將收到的步驟的陣列,並返回一個新的數組試圖儘可能多地合併後續步驟,以便考慮到這一點步驟陣上面:
mergeStepsArray(steps, mergeSteps);
將返回['f', 'bcd', 'x', 'hi' ]
我怎樣纔能有效地編寫這樣的功能?我試圖使用Array.reduce,但在這種情況下我無法使用它。
注:我需要一個mergeStepsArray(steps, mergeSteps)
即一般並不知道它的參數的具體細節。例如可以由數字和mergeSteps的步驟可以return s2==s1*2 ? s1*s2 : null
感謝
能使用澄清,應該合併遞歸? IE「'bcd ...'」?或者只是一個迭代? – Enfyve
是應該的,我會更新我的問題,THX – kofifus
問題應該更有意義,現在 – kofifus