在javascript中查找所有嵌套数组中的Max和Min元素

Sha*_*yal 4 javascript arrays max min

我有一个像这样的数组:

var arr = [[12,45,75], [54,45,2],[23,54,75,2]];
Run Code Online (Sandbox Code Playgroud)

我想找出嵌套数组中所有元素中最大的元素和最小的元素:

分钟应该是: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;
    }
Run Code Online (Sandbox Code Playgroud)

它给出Max为75,min为12.

任何指导将不胜感激.

在SO中尝试了其他答案,但没有任何帮助.

在JavaScript合并/压平数组数组的答案解决了合并数组的问题.

而我的问题是保持数组不变并执行操作.

klu*_*gjo 12

假设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);
Run Code Online (Sandbox Code Playgroud)

  • 这个答案是我正在寻找的最准确的答案,感谢您的努力。 (3认同)

gur*_*372 6

您可以先展平数组(优点 - 适用于多层嵌套数组

var flattenedArr = [[12,45,75], [54,45,2],[23,54,75,2] ].toString().split(",").map(Number);
Run Code Online (Sandbox Code Playgroud)

然后从展平数组中获取minmax

var max = Math.max.apply( null, flattenedArr );
var min = Math.min.apply( null, flattenedArr );
Run Code Online (Sandbox Code Playgroud)

演示

var flattenedArr = [[12,45,75], [54,45,2],[23,54,75,2] ].toString().split(",").map(Number);
Run Code Online (Sandbox Code Playgroud)