我有一个类似以下的数组:
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
问题是,这只适用于一维数组。我如何在我的情况下实现这个?(允许使用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()
只是将一个数组计算为单个值。一个.map()
基本上是一个.reduce()
,将它计算为一个新的集合。因此,可以使用以下方式通过.reduce()
实现.map()
的行为:array.reduce(function(arr, curr) { arr.push(curr[0]); return arr; }, [])
。然后仍然会使用Math.max.apply...
。使用.map()
风格与.apply
的优点在于避免了重复的Math.max
调用。直接减少到数字的好处可能是更清晰明了。 - user1106925[8,14]
中的8是最高值,我如何得到14
? - t qreturn Math.max.apply(Math, arr.concat(max))
- user1106925