如何使用 Javascript 中的 reduce 函数获取数字数组并返回最大和最小数字?
到目前为止我的尝试:
function each(collection, callback) {
if(Array.isArray(collection)) {
for(var i = 0; i < collection.length; i++) {
callback(collection[i]);
}
} else {
for(var prop in collection) {
callback(collection[prop]);
}
}
}
function reduce(collection, callback, initial) {
each(collection, function(element) {
if(initial === undefined) {
initial = element;
} else {
initial = callback(initial, element);
}
});
return initial;
}
function highAndLow(collection) {
//use reduce
return reduce(collection, function(initial, element){
if(initial[element] > initial[element]){
initial = "high: " + element;
} else {
initial = "low: " + element
}
return initial;
}, {})
}
highAndLow([5,2,1,6,8])
结果应该如下所示: highAndLow(5, 2, 1, 6, 8) === { 低: 1, 高: 8 }
最佳答案
是的,这是可能的,例如使用此代码
function highAndLow(array) {
return array.reduce(function (r, a) {
return {
low: Math.min(r.low, a),
high: Math.max(r.high, a)
};
}, { low: array[0], high: array[0] });
}
document.write('<pre>' + JSON.stringify(highAndLow([5, 2, 1, 6, 8]), 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(highAndLow([]), 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(highAndLow([-2, .1, 0, 1, 2]), 0, 4) + '</pre>');
关于javascript - 如何使用 Javascript 中的 reduce 函数获取数字数组并返回最大和最小数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35699468/