[英]Get largest value in multi-dimensional array javascript or 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測試 。
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()的鏈接。
關於_underscore的最好的部分是大約有另外一百個類似於_max的輔助函數。 喜歡排序。
比較以下語法:
var sortedObject = _.sortBy(object, function(val, key, object) {
return val;
});
它們很容易鏈接和解釋! (像Douglas Crockford可能建議的那樣)
@Raynos在這篇文章中提供了一個優秀的JSFIDDLE 。
如果您一直使用原始JavaScript進行數組操作,請查看_underscore.js,它可以大大簡化您的代碼。
希望有所幫助,一切順利! 納什
Array.prototype.maxX = function(){
return Math.max.apply(Math,this.map(function(o){return o[0];}));
};
我知道這是一個舊帖子,但是如果你(或其他人)想要整個數組中最大的數字,請嘗試:
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<arr.length; i++){
for(var j=0; j<arr[i].length; j++){
if(largest < arr[i][j]){
largest = arr[i][j];
}
largestArr[i] = largest;
}
largest = 0;
}
return largestArr;
}
您可以從兩個dim數組中將最大數字填充到新Array中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.