Array#reduceRight
- это , а не то же, что и Array#reverse()
-> Array#reduce()
. Вот ключевая разница .reduce()
/ .reduceRight()
Не изменяйте начальный массив:
const arr = ["a", "b", "c"];
const combine = arr.reduceRight((a, b) => a+b, "");
console.log(combine);
console.log(arr);
Однако .reverse()
делает:
const arr = ["a", "b", "c"];
const combine = arr.reverse().reduce((a, b) => a+b, "");
console.log(combine);
console.log(arr);
Есть также вопрос к производительности - .reverse
потребует дополнительной обработки O(n)
для обращения массива на месте, то есть поверх .reduce()
который уже работает на O(n)
. Да, окончательная сложность все еще равна O(n)
(мы игнорируем константы), но один проход через массив быстрее.