我有一个像这样的数组:
var arr = [[12,45,75], [54,45,2],[23,54,75,2]];
我想找出嵌套数组中所有元素中最大的元素和最小的元素:
最小值应为:2
和
最大值应为75
我尝试了以下功能,但它们不起作用:
function Max(arrs)
{
if (!arrs || !arrs.length) return undefined;
let max = Math.max.apply(window, arrs[0]), m,
f = function(v){ return !isNaN(v); };
for (let i = 1, l = arrs.length; i<l; i++) {
if ((m = Math.max.apply(window, arrs[i].filter(f)))>max) max=m;
}
return max;
}
function Min(arrs)
{
if (!arrs || !arrs.length) return undefined;
let min = Math.min.apply(window, arrs[0]), m,
f = function(v){ return !isNaN(v); };
for (let i = 1, l = arrs.length; i<l; i++) {
if ((m = Math.min.apply(window, arrs[i].filter(f)))>min) min=m;
}
return min;
}
给出的最大值为75,最小值为12。
任何指导将不胜感激。
还尝试了其他答案,但没有帮助。
Merge/flatten an array of arrays in JavaScript?的答案解决了合并数组的问题。
而我的问题是保持阵列不变并执行操作。
最佳答案
假设ES6
const arr = [[12,45,75], [54,45,2],[23,54,75,2]];
const max = Math.max(...[].concat(...arr));
const min = Math.min(...[].concat(...arr));
console.log(max);
console.log(min);