【发布时间】:2016-10-08 00:52:16
【问题描述】:
我调用reduce 两次以获得最小值和最大值,但是有没有一种方法可以让我只调用reduce 一次并获得相同的结果 - 必须通过使用单个调用来减少。 - 例如 minMax([4, 1, 2, 7, 6]) 返回 [1, 7]
function minMax(items)
{
return [items.reduce((prev, curr)=> Math.min(prev, curr)),
items.reduce((prev, curr)=> Math.max(prev, curr))]
}
【问题讨论】:
-
请给出一个实际的标题...
-
只需使用
return [Math.min(...items), Math.max(...items)]。 -
@Xufox Nice :),, 唯一的事情是 OP 说 ->
Must do this by using a single call to reduce。我不确定为什么会这样,但出于好奇,我想我会做一些快速的性能测试,使用 reduce 的速度是原来的两倍多。我假设这不仅仅是因为reduce 正在执行单程,而且单程执行将有助于CPU 缓存。但无论如何,无论如何,我仍然认为你的回答值得竖起大拇指.. :)
标签: javascript functional-programming computer-science