Javascript max() for array column

Javascript max() for array column

本文关键字:array column for max Javascript      更新时间:2023-09-26

通常当我需要找到数组的最大值时,我使用这个非常简单的代码: var max = Math.max.apply(Math, array);

但是,现在我有一个多维数组,其中每行我都有一个包含 5 列的数组。有没有类似的方法来查找某个列的最大值?现在我正在做:

var maxFunc = function(data){
    var max = 0;
    data.forEach(function(value){
        max = Math.max(max, value[0]);
    });
    return max;
};

我很好奇是否有更漂亮/更简单的方法?

我会这样写:

Math.max.apply(Math, array.map(v => v[0]));

array.map将根据您的领料逻辑转换原始数组,在本例中返回第一项。然后将转换后的数组馈送到Math.max()

若要避免创建新数组,还可以将数组减少到单个值:

array.reduce((max, current) => Math.max(max, current[0]), -Infinity)

如您所见,我们需要添加 -Infinity 的初始值,如果数组为空,则返回该值。

这是一个很好的应用程序Array.prototype.reduce

max = data.reduce(function(previousVal, currentItem, i, arr) {
    return Math.max(previousVal, currentItem[0]);
}, Number.NEGATIVE_INFINITY);

这也避免了代码中如果 data 中的所有值都小于 0 时会发生的错误。您应该与Number.NEGATIVE_INFINITY进行比较,而不是0

或者,您可以在减少到最大值之前规范化数据:

max = data.map(function (d) {
    return d[0];
}).reduce(function (p, c, i, arr) {
    return Math.max(p, c);
});