首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >_.chain -下划线JS

_.chain -下划线JS
EN

Stack Overflow用户
提问于 2014-09-20 03:21:15
回答 2查看 5.4K关注 0票数 5

这段代码工作正常

代码语言:javascript
复制
var arr = _.range(1,1000);
var parse = _.filter(arr, function(num) {return num%3===0 || num%5===0});
var sum = _.reduce(parse, function(memo, num){ return memo + num; }, 0) //233168

是否可以使用_.chain()函数来清理这段代码?我试着在下面编写代码,但是它给出了一个Type错误。

代码语言:javascript
复制
var arr = _.range(1,1000);
var sum = _.chain(arr)
        .filter(arr, function(num) {return num%3===0 || num%5===0})
        .reduce(arr, function(memo, num){ return memo + num; }, 0)
        .value();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-20 03:32:04

只需将第一个参数(arr)从_.chain()_.value()中的每个函数中删除(因为它们现在从链中收集):

代码语言:javascript
复制
var arr = _.range(1,1000);
var sum = _.chain(arr)
    .filter(function(num) {return num%3===0 || num%5===0})
    .reduce(function(memo, num){ return memo + num; }, 0)
    .value();

通过将range arguments (即11000)拆分为chain函数和range函数,您还可以做得更简洁一些:

代码语言:javascript
复制
var sum = _.chain(1).range(1000)
    .filter(function(num) {return num%3===0 || num%5===0})
    .reduce(function(memo, num){ return memo + num; }, 0)
    .value();

它可以工作,但我不确定最后一个在代码可读性方面是否是个好主意。

票数 7
EN

Stack Overflow用户

发布于 2022-06-23 15:36:29

这是工作,是(IMHO)更清楚一点。

代码语言:javascript
复制
var sum = _(_.range(1000)).chain()
          .filter(function (x) { return (x % 3 === 0  ||  x % 5 === 0) })
          .reduce(function (sum, x) { return sum + x }, 0)
          .value();    /* try chaining range() and reduce() */

我想在这里解决JavaScript考恩是可以的吧?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25944870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档