gpt4 book ai didi

javascript - `Array.prototype.reduceRight` 是否与 `reverse` 后跟 `reduce` 相同?

转载 作者:行者123 更新时间:2023-12-05 08:51:02 25 4
gpt4 key购买 nike

Array.prototype.reduceRight将数组缩减为单个值,从右到左工作(即从数组末尾开始)。

调用 reduceRight 与调用 reverse 完全一样其次是 reduce ?如果是这样,为什么 reduceRight 存在?

最佳答案

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)(我们忽略常量)但是单次遍历数组会更快。

关于javascript - `Array.prototype.reduceRight` 是否与 `reverse` 后跟 `reduce` 相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60721979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com