Javascript 函数minMax(items){items.reduce([最小,当前]最小<;当前?最小:当前)};

Javascript 函数minMax(items){items.reduce([最小,当前]最小<;当前?最小:当前)};,javascript,functional-programming,computer-science,Javascript,Functional Programming,Computer Science,我调用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,

我调用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))]
}

使用reduce一次可以处理多件事情,初始值可以是任何东西、数组/对象等

下面应该是你想要的东西

var值=[33,2,48,23,1,45,23311312,32,32]
函数最小最大值(项){
返回项。reduce(函数(a,b){
a[0]=数学最小值(a[0],b),
a[1]=数学最大值(a[1],b);
返回一个;},
[+无限,-无限])
}

log(最小最大值(value))只需使用数学最小值和最大值,并将应用绑定到数学;)

constnums=[4,1,2,7,6];
const minMax=numbers=>[Math.min.apply(数学,数字),Math.max.apply(数学,数字)];

console.log(minMax(nums))请给出一个实际的标题…只需使用
返回[Math.min(…items),Math.max(…items)]
@Xufox Nice:),,唯一的问题是OP说->
必须通过使用单个调用来减少
。我不知道为什么会这样,但出于好奇,我想我应该做一些快速的性能测试,使用reduce的速度是原来的两倍多。我假设reduce也只做一个过程,这不仅仅是因为reduce只做一个过程,而且在一个过程中做它将有助于CPU缓存。但不管怎样,我仍然认为你的答案值得称赞