我有一个如下所示的数组:
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.