Javascript 的 reduce() 函数有什么优点?(和地图())

Jay*_*Jay 6 javascript reduce web-applications

我正在尝试决定是否对我需要编写的函数使用 Javascript 中的 reduce() 方法,它是这样的

var x = [some array], y = {};
for (...) {
    someOperation(x[i]);
    y[x[i]] = "some other value";
}
Run Code Online (Sandbox Code Playgroud)

现在这显然可以用以下方式写成一个 reduce() 函数:

x.reduce(function(prev, current, index, arr) {
    someOperation(current);
    prev[current] = "some other value";
    return prev;
}, {})
Run Code Online (Sandbox Code Playgroud)

或类似的东西。两者之间是否有任何性能或其他差异?或者其他一些原因(例如浏览器支持),在 Web 编程环境中,哪一个应该比另一个更受青睐?谢谢。

Cri*_*hez 4

尽管我更喜欢这些操作(reduce、map、filter 等),但使用它们仍然不可行,因为某些浏览器的实现不支持它们。当然,您可以通过扩展原型来“修补”它Array,但这也会带来麻烦。

我不认为这些函数有什么本质上的错误,而且我认为它们可以编写更好的代码,但目前最好不要使用它们。一旦更多人使用支持这些功能的浏览器,我认为它们将成为公平的游戏。

就性能而言,由于函数调用的开销,这些可能会比手写的 for 循环慢。

  • @Jayraj Jog:我更喜欢它们,因为它们抽象出了非常常见的过程,因此代码更加干净,没有设置循环等的所有样板。如您所知,JavaScript 通常在单线程环境中运行,因此您可以获得这些好处并行环境中的 map/reduce 并不真正适用。所以对于Web开发来说,这些map和reduce函数基本上是为了帮助提高可读性和可写性。显然这只是我的意见,但我希望我能为您提供一些见解。 (2认同)