基部挑戰是通過相加相鄰的克隆,以減少數(設有連續的重複)的陣列的陣列:遞歸降低連續重複的數字
const sumClones = (numbers) => {
if (Array.isArray(numbers)) {
return numbers.reduce((acc, elem, i, arr) => {
if (elem !== arr[i - 1]) acc.push(elem);
else acc[acc.length - 1] += elem;
return acc;
}, []);
}
};
sumClones([1,1,2,1, 1,1,1,2,1,1,1])=> [2,2,4,2,3]
現在,我試圖編寫另一個遞歸運行sumClones的函數reduceClones,以便最終輸出不包含連續副本
const reduceClones = (numbers) => {
let result = sumClones(numbers);
while (result[0] === result[1]) {
result = sumClones(result);
}
return result;
};
reduceClones([1,1,2,1,1,1,1,2,1,1,1])=> [8,2,3]
有沒有更好的方法來做到這一點?
'while(result [0] === result [1])'終止條件似乎不正確。我建議監測結果長度是否改變。 –