Javascript max()表示数组列

ffl*_*dro 11 javascript math max

通常当我需要找到数组的最大值时,我使用这个非常简单的代码: 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;
};
Run Code Online (Sandbox Code Playgroud)

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

Ja͢*_*͢ck 14

我会这样写:

Math.max.apply(Math, array.map(function(v) {
  return v[0];
}));
Run Code Online (Sandbox Code Playgroud)

array.map将改变根据您的采摘逻辑原始数组,在这种情况下,返回的第一个项目.然后将转换后的阵列送入Math.max()


zzz*_*Bov 9

这是一个伟大的应用程序Array.prototype.reduce:

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

这也避免了代码中的错误,如果所有值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);
});
Run Code Online (Sandbox Code Playgroud)