在多维数组javascript或coffeescript中获得最大价值

我有一个如下所示的数组:

array = [[1, 5], [4, 7], [3, 8], [2, 3],  
 [12, 4], [6, 6], [4, 1], [3, 2], 
 [8, 14]]

我需要的是集合中第一个值的最大数字,所以在这种情况下为12.
在线查看一些示例,我看到实现这一目标的最佳方式是:

Math.max.apply Math, array

问题是,这仅适用于单维数组.我怎么能为我的Senario诋毁这个? (允许jquery)

最终解决方案:

这不是问题的一部分,但我需要数组中的最小值和最大值,这会改变一些事情.

    unless device.IE
        justTheDates    = magnitudeArray.map (i) -> i[0]
        @earliest       = Math.min.apply Math, justTheDates
        @latest         = Math.max.apply Math, justTheDates                 
    else
        @earliest       = magnitudeArray[0][0]
        @latest         = magnitudeArray[0][0]
        for magnitudeItem in magnitudeArray
            @earliest   = magnitudeItem[0] if magnitudeItem[0] < @earliest
            @latest     = magnitudeItem[0] if magnitudeItem[0] > @latest

解决方法:

你可以使用.reduce()……

array.reduce(function(max, arr) { 
    return Math.max(max, arr[0]); 
}, -Infinity)

这是一个不使用Math.max的版本……

array.reduce(function(max, arr) {
    return max >= arr[0] ? max : arr[0];
}, -Infinity);

……和一个jsPerf test.

上一篇:javascript – 如何扩展EJSON以序列化RegEx以进行Meteor客户端 – 服务器交互?


下一篇:javascript – 为所有函数添加一行代码