我发现了许多类似的帖子,但还没有完全满足这个问题:我怎样才能获得最小和最小的帖子。 javascript中以下2D数组的最大值?
[[1,2,3],[4,5,6],[7,8,9]]
即返回1和9。
this问题不是我之后的事(因为用户想要忽略col 0),而here仅询问1D数组。
The accepted answer here仅询问每组的第一个值。
有人能指出我正确的(接受的)方法吗?非常感谢!
答案 0 :(得分:2)
如何展平数组,然后使用Math.max.apply
和Math.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)
尝试使用传统方式从数组中查找min
和max
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
你可以在下面看到性能测试,
答案 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)
}