獲取最大最小號碼如果我有一個這樣的數組:從多維數組
array = [[1, 5, 8, 9], [3, 7], [3, 8, 33], [2], [0, 6]]
我需要從這個數組找到最大值和最小值。在這種情況下,max = 33, min = 0
我看到陣列的例子減少,但我不希望找到一個內部數組的特定索引最大值。
獲取最大最小號碼如果我有一個這樣的數組:從多維數組
array = [[1, 5, 8, 9], [3, 7], [3, 8, 33], [2], [0, 6]]
我需要從這個數組找到最大值和最小值。在這種情況下,max = 33, min = 0
我看到陣列的例子減少,但我不希望找到一個內部數組的特定索引最大值。
與剛剛嘗試:
var flat = [];
$.map(array, function(item){ $.merge(flat, item); });
// or merge arrays using `join` and `split`
var flat = array.join().split(',');
var max = Math.max.apply(Math, flat),
min = Math.min.apply(Math, flat);
http://jsfiddle.net/rz6tz/ - 它工作正常,謝謝hsz –
@sudhar不客氣! – hsz
這裏是純JS基礎的解決方案。沒有jQuery的:
var flattened = [[1, 5, 8, 9], [3, 7], [3, 8, 33], [2], [0, 6]].reduce(function(a, b) {
return a.concat(b);
});
Math.max.apply(null, flattened) //33
Math.min.apply(null, flattened) // 0
min = max = array[0][0]
for (i in array)
for (j in array[i]) {
if (array[i][j] > max) max = array[i][j]
if (array[i][j] < min) min = array[i][j]
}
沒有jQuery的,使用this answer增加最大和最小到數組:
Array.prototype.max = function() {
return Math.max.apply(null, this);
};
Array.prototype.min = function() {
return Math.min.apply(null, this);
};
答案就變成了:
arr = [[1, 5, 8, 9], [3, 7], [3, 8, 33], [2], [0, 6]]
maxm = arr.map(function(a){return a.max()}).max();
minm = arr.map(function(a){return a.min()}).min();
隨着underscorejs:
var array = [[1, 5, 8, 9], [3, 7], [3, 8, 33], [2], [0, 6]];
var max = _.chain(array)
.flatten()
.max()
.value()
非常自我解釋得到最小。
你可以這樣做:
var array=[[1, 5, 8, 9], [3, 7], [3, 8, 33], [2], [0, 6]];
var newArr=array.join().replace(/\[\]/,"").split(',').map(function(x){return +x});
Math.max.apply(null,newArr); // 33
Math.min.apply(null,newArr); // 0
你是outStandable。偉大的無言要說 –
downvoter,謹慎地闡述? –
http://jsfiddle.net/rz6tz/1/ - 它很好,爲什麼投票 –
是數組總是二維或可能它有更多的? – aurbano
@aurbano,是的,這是2維始終。 – benjamin54
http://stackoverflow.com/questions/11149843/get-largest-value-in-multi-dimensional-array-javascript-or-coffeescript – Satpal