Javascript:使用reduce()查找最小值和最大值? [英] Javascript: Using reduce() to find min and max values?
问题描述
我有一个类的代码,我应该使用reduce()方法来查找数组中的最小值和最大值。但是,我们只需要使用一次调用来减少。返回数组的大小应为2,但我知道reduce()方法总是返回一个大小为1的数组。我可以使用下面的代码获取最小值,但是我不知道如何获取同一个电话中的最大值。我假设一旦我获得了最大值,我只需在reduce()方法完成后将其推送到数组。
I have this code for a class where I'm supposed to use the reduce() method to find the min and max values in an array. However, we are required to use only a single call to reduce. The return array should be of size 2, but I know that the reduce() method always returns an array of size 1. I'm able to obtain the minimum value using the code below, however I don't know how to obtain the max value in that same call. I assume that once I do obtain the max value that I just push it to the array after the reduce() method finishes.
/**
* Takes an array of numbers and returns an array of size 2,
* where the first element is the smallest element in items,
* and the second element is the largest element in items.
*
* Must do this by using a single call to reduce.
*
* For example, minMax([4, 1, 2, 7, 6]) returns [1, 7]
*/
function minMax(items) {
var minMaxArray = items.reduce(
(accumulator, currentValue) => {
return (accumulator < currentValue ? accumulator : currentValue);
}
);
return minMaxArray;
}
推荐答案
诀窍在于提供一个empty Array as initialValue参数
The trick consist in provide an empty Array as initialValue Parameter
arr.reduce(callback, [initialValue])
initialValue [可选]用作回调
第一次调用的第一个参数的值。如果没有提供初始值,将使用数组中的第一个
元素。
initialValue [Optional] Value to use as the first argument to the first call of the callback. If no initial value is supplied, the first element in the array will be used.
所以代码看起来像这个:
So the code would look like this:
function minMax(items) {
return items.reduce((acc, val) => {
acc[0] = ( acc[0] === undefined || val < acc[0] ) ? val : acc[0]
acc[1] = ( acc[1] === undefined || val > acc[1] ) ? val : acc[1]
return acc;
}, []);
}
这篇关于Javascript:使用reduce()查找最小值和最大值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!