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)
您可以先展平数组(优点 - 适用于多层嵌套数组)
var flattenedArr = [[12,45,75], [54,45,2],[23,54,75,2] ].toString().split(",").map(Number);
Run Code Online (Sandbox Code Playgroud)
然后从展平数组中获取min和max
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)
| 归档时间: |
|
| 查看次数: |
1426 次 |
| 最近记录: |