javascript - 如何使用 Javascript 中的 reduce 函数获取数字数组并返回最大和最小数字

标签 javascript arrays object higher-order-functions

如何使用 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/

相关文章:

javascript - CasperJS 点击谷歌搜索按钮,this.evaluate() javascript

ruby - 重载 Ruby 的 [...] 数组创建速记

c - 如何通过引用将 char * foo[SIZE][SIZE] 传递给函数并取消引用它?

c# - 在 C# 中更改列表值也会更改您的复制元素

php - 如何通过 PHP 或 Javascript 检查 HTML 代码是否有效

javascript - 本地存储和ngrx存储

javascript - 在 Javascript 中解析 HTML 标签

php - 从逗号分隔的数字字符串和带连字符的数字范围填充整数数组

python - 为什么不分配给循环变量修改原始列表?如何循环分配回列表?

javascript - 遍历 JavaScript 对象