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

Fre*_*all 9 javascript arrays jquery coffeescript

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

array = [[1, 5], [4, 7], [3, 8], [2, 3],  
 [12, 4], [6, 6], [4, 1], [3, 2], 
 [8, 14]]
Run Code Online (Sandbox Code Playgroud)

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

Math.max.apply Math, array
Run Code Online (Sandbox Code Playgroud)

问题是,这仅适用于单维数组.我怎么会为我的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
Run Code Online (Sandbox Code Playgroud)

小智 13

你可以用.reduce()......

array.reduce(function(max, arr) { 
    return Math.max(max, arr[0]); 
}, -Infinity)
Run Code Online (Sandbox Code Playgroud)

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

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

......和jsPerf测试.

  • +1对于经典折叠示例:).甲的CoffeeScript [翻译](http://coffeescript.org/#try:array%20%3D%20 [[1%2C%205]%2C 20%[4%2C%207]%2C 20%[3% 2C%208]%2C 20%[2%2C%203]%0A%0Amax%20%3D%20array.reduce%20%28%28max%2C%20arr%29%20-%3E%20Math.max% 20max%2C%20arr [0]%29%2C 20%-∞%0Aconsole.log%20max):`最大= array.reduce((最大值,ARR) - > Math.max最大值,ARR [0]), - Infinity` (3认同)

zer*_*kms 8

http://jsfiddle.net/zerkms/HM7es/

var max = Math.max.apply(Math, arr.map(function(i) {
    return i[0];
}));?
Run Code Online (Sandbox Code Playgroud)

因此,首先您使用array.map()将二维数组转换为平面数组,然后使用Math.max()