在多维数组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] @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测试 。
http://jsfiddle.net/zerkms/HM7es/
var max = Math.max.apply(Math, arr.map(function(i) { return i[0]; }));
因此,首先使用array.map()
将二维数组转换为平面数组,然后使用Math.max()
使用Underscore.js’max的简单解决方案,可避免生成中间数组:
max = _(array).max(_.first)[0]
( JSFiddle )
在CoffeeScript中使用理解:
Math.max.apply Math, (x[0] for x in array)
运行示例
另外,请查看_underscore.js。 这是函数_max()的链接。
- 读取,写入和维护效率更高。
关于_underscore的最好的部分是大约有另外一百个类似于_max的辅助函数。 喜欢排序。
比较下面的语法:
var sortedObject = _.sortBy(object, function(val, key, object) { return val; });
它们很容易链接和解释! (就像道格拉斯·克罗克福德所说的那样)
@Raynos在这篇文章中提供了一个优秀的JSFIDDLE 。
如果您一直使用原始JavaScript进行数组操作,请查看_underscore.js,它可以大大简化您的代码。
希望有所帮助,一切顺利! 纳什
Array.prototype.maxX = function(){ return Math.max.apply(Math,this.map(function(o){return o[0];})); };
我知道这是一个旧post,但如果你(或其他人)想要整个数组中最大的数字,请尝试:
var array = [[1, 5], [4, 7], [3, 8], [2, 3], [12, 4], [6, 6], [4, 1], [3, 2], [8, 14]]; var max = array.reduce(function (max, arr) { return max >= Math.max.apply(max, arr) ? max : Math.max.apply(max, arr); }, -Infinity); console.log(max);
在此考试中,它将返回值14。
样本输入:largestOfFour([[4,5,1,3],[13,27,18,26],[32,35,37,39],[1000,1001,185,1]]);
function largestOfFour(arr) { var largest = 0; var largestArr = []; for(var i=0; i
您可以从两个暗淡的数组中将最大的数字填充到新的数组中。