min max values 2D array javascript

时间:2016-03-08 06:24:20

标签: javascript arrays

我发现了许多类似的帖子,但还没有完全满足这个问题:我怎样才能获得最小和最小的帖子。 javascript中以下2D数组的最大值?

[[1,2,3],[4,5,6],[7,8,9]]

即返回1和9。

this问题不是我之后的事(因为用户想要忽略col 0),而here仅询问1D数组。

The accepted answer here仅询问每组的第一个值。

有人能指出我正确的(接受的)方法吗?非常感谢!

5 个答案:

答案 0 :(得分:2)

如何展平数组,然后使用Math.max.applyMath.min.apply

var arr = [[1,2,3],[4,5,6],[7,8,9]].reduce(function (p, c) {
  return p.concat(c);
});

var max = Math.max.apply(null, arr); // 9
var min = Math.min.apply(null, arr); // 1

答案 1 :(得分:0)

尝试使用传统方式从数组中查找minmax

var x = [[1, 2, 3],[4, 5, 6],[7, 8, 9]];
var min,max;
x.forEach(function(itm) {
  itm.forEach(function(itmInner) {
    min = (min == undefined || itmInner<min) ? itmInner : min;
    max = (max == undefined || itmInner>max) ? itmInner : max;
  });
});
console.log(max,min); // 9, 1

DEMO

你可以在下面看到性能测试,

Performance Test

答案 2 :(得分:0)

使用Array.prototype.reduce展平数组和Array.prototype.sort或Math.Min \ Math.Max以查找最大\最小值。

var arr = [[9,2,3],[4,5,6],[7,8,1]];
var flattenedArr = arr.reduce(function(arr1, arr2) {  return arr1.concat(arr2)});

var sorted = flattenedArr.sort();
var min = sorted[0];
var max = sorted[sorted.length - 1];

答案 3 :(得分:0)

试试这个

var array = String([[1,2,3],[4,5,6],[7,8,9]]).split(",").map( function(value){ return parseInt(value); } );

var max_of_array = Math.max.apply(Math, array);
var min_of_array = Math.min.apply(Math, array);

答案 4 :(得分:0)

function minMaxIn2D(arr) {
  var min,max;
  for(var i in arr) {
    for(var j in arr[i]){
      min = min - arr[i][j] <= 0 ? min : arr[i][j] ;
      max = max - arr[i][j] >= 0 ?  max: arr[i][j]; 
    }

  }
  console.log(min, max)
}