从多维数组中获取最小 - 最大数字

时间:2014-04-09 12:39:53

标签: javascript jquery

如果我有这样的数组:

array = [[1, 5, 8, 9], [3, 7], [3, 8, 33], [2], [0, 6]]

我需要从这个数组中找到最大值和最小值。在这种情况下,max = 33, min = 0

我看到了数组reduce的例子,但我不想找到内部数组的特定索引的最大值。

6 个答案:

答案 0 :(得分:10)

试试:

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 );

答案 1 :(得分:2)

这是基于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

答案 2 :(得分:2)

没有jquery,使用this answer向数组添加max和min:

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();

答案 3 :(得分:1)

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]    
    }

答案 4 :(得分:1)

你可以这样做:

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

答案 5 :(得分:0)

使用underscorejs:

var array = [[1, 5, 8, 9], [3, 7], [3, 8, 33], [2], [0, 6]];
var max = _.chain(array)
           .flatten()
           .max()
           .value()

获得最低限度的自我解释。

相关问题