javascript - Javascript的reduce()函数有什么优点? (和 map ())

标签 javascript web-applications reduce

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

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

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

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

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

最佳答案

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

我不认为这些函数有任何内在的错误,我认为它们有助于编写更好的代码,但目前最好不要使用它们。一旦更高比例的人使用支持这些功能的浏览器,我认为他们将成为公平游戏。

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

关于javascript - Javascript的reduce()函数有什么优点? (和 map ()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6366143/

相关文章:

javascript - Twitter 社交框延迟页面加载 - 如何异步?

json - 我应该在客户端验证 API 响应吗?

javascript - 使用javascript以百分比计算div高度?

javascript - Grunt browserify 在需要 react-bootstrap-typeahead 时失败

java - 模拟打印机

visual-studio-2010 - 我应该在发布 web.config 中保留 <customErrors mode ="Off"/> 吗?

hadoop - mapreduce wordcount 程序中的驱动程序未调用 reducer

javascript - 使用 "reduce"乘以数字数组时出现未定义的输出

javascript - 在 JavaScript 中为每个数组分组、求和并生成一个对象

javascript - $_GET JavaScript 和 AJAX...