【发布时间】:2020-10-14 19:34:33
【问题描述】:
在 Javascript 中,给定一个简单的 number[] 数组,是否有一种优雅的方法可以同时计算最小值和最大值,或者如果数组为空则返回 undefined?
类似这样的:
const a = [1, 2, 3];
const (min, max) = minMax(a);
先发制人的回应说明:
-
这不是与this question的重复,因为他实际上并不是在计算同一个数组的最小值和最大值,而是计算4个不同数组的最小值或最大值.
-
我想一次性计算出这些。不是
[Math.min(a), Math.max(a)]。 -
我知道该怎么做:
let min = undefined;
let max = undefined;
for (const x of array) {
min = min === undefined ? x : Math.min(min, x);
max = max === undefined ? x : Math.max(max, x);
}
我想知道是否有更优雅的东西,例如使用Array.reduce()。
【问题讨论】:
-
没有
Math.reduce函数,你的意思是Array.reduce吗?如果是这样,只需将for of循环放入reduce函数中即可。 -
啊是啊,谢谢!而且它不是那么简单,因为
reduce的输入和输出必须是相同的类型。我可以做array.map(x => [x, x]).reduce(...),但是euurgh。不是我对优雅的看法。 -
array.reduce(([min,max], x)=>[Math.min(min,x),Math.max(max,x)],[,,].fill(array[0]))?
标签: javascript arrays numbers max min