gpt4 book ai didi

javascript - 将 reduce() 与 + 运算符一起使用的最简洁方法是什么?

转载 作者:行者123 更新时间:2023-12-04 08:20:27 24 4
gpt4 key购买 nike

情况:我想调用reduce使用二进制加法。
理想的情况是简洁,语法优雅,即,arr.reduce( + , 0 )但这实际上并不像书面那样工作。我在网上看到的例子往往更像arr.reduce( (a, b) => a+b, 0 ) .
这行得通,但感觉应该有一种更简单、更“优雅”的方式来做像二进制加法这样简单的事情。
问题:有什么方法可以避免定义一个完整的匿名函数来告诉 reduce我想要二进制加法?

最佳答案

这表明即使 JavaScript 可以启用函数式编程风格(在一定程度上),JavaScript 也不是函数式语言。
我认为你所拥有的已经足够好了。在这一点上,你能做的最好的事情就是尽可能清楚地表达你的意图(当然是 YMMV):

const add = (a, b) => a + b;
const sum = (...xs) => xs.reduce(add, 0);

sum(40, 1, 1);
// 42

JavaScript 不是函数式语言?!
当然,这只是我的看法,但与 Clojure 或 Haskell 等其他语言不同,在 JavaScript + 中不是函数而是运算符,这意味着您不能将其分配给变量或将其作为参数传递。
在 Haskell 中,您可以添加两个数字,如下所示:
40 + 2
似乎 +是一个运算符,但它实际上是一个(中缀)函数,您可以将其作为参数传递并部分应用:
foldl (+) 0 [40, 1, 1]
-- 42

map (+ 10) [40, 1, 1]
-- [50, 11, 11]
在 Clojure 中,您可以添加两个数字,如下所示
(+ 40 2)
; 42
但是在 Clojure 中也是 +实际上是一个函数:
(reduce + 0 '(40 1 1))
; 42
然而,这不是必要的,因为 +无论如何都可以使用数字列表:
(+ 40 1 1)
; 42
(+ 39 1 1 1)
; 42
(+ 38 1 1 1 1)
; 42

关于javascript - 将 reduce() 与 + 运算符一起使用的最简洁方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65526319/

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