連続重複数のアレイを減らす基地課題は、一緒に隣接するクローンを追加することにより、数字(連続重複を搭載)のアレイを低減することであった。再帰的
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,2,1,1,1])=> [8,2,3]
もっと良い方法がありますか?
'while(result [0] === result [1])'終了条件が正しくないようです。代わりに、結果の長さが変化するかどうかを監視することをお勧めします。 –