【发布时间】:2015-06-04 04:18:44
【问题描述】:
在这方面遇到了很多麻烦,以至于我迫切希望朝着正确的方向前进。
通过编写reduce 函数尝试完成一个常见的Underbar(基本上是Underscore)练习。它必须满足四个测试:
- 应该能对数组求和
- 如果没有给出第一个元素,则应将其用作累加器
- 当给定累加器时,应该涉及第一个元素上的迭代器
- 将第一个元素用作累加器时,不应在第一个元素上调用迭代器
这向我表明有两种基本情况:
-
给出了一个累加器,使累加器 != 未定义,此时您可以使用 .each 来满足测试 1 和 3,因为您将遍历所有值,从 (accumulator, collection[0]) 开始,然后 (集合[0]、集合[1])等。或者这就是我的想法;我可能会走得很远。
if (accumulator != undefined) { _.each(collection, function(value) { accumulator = iterator(accumulator, value); }); } return accumulator; 测试 2 和 4 仍然失败,因为没有给出累加器,那时我迷路了。我不认为 .each 可以使用。基本上我必须告诉这个从 collection[0] 开始并遍历其余部分,但我完全迷失了。我对编码还是很陌生,其中很多内容还没有完全融入。
我们非常感谢您提供的任何帮助。如果我对这些功能如何工作的想法有误,也请随时纠正。我只是在寻求帮助。
【问题讨论】:
-
正常的
for循环怎么样? -
在没有提供累加器时使用 _.first 和 _.rest
标签: javascript iterator underscore.js reduce