我有这个小脚本将返回最大数量的数组,它可以工作,除了它不适用于多维数组。
如何调整它以返回多维数组中最大数字的数组?
来源:
function largestOfFour(arr) {
for(var x=0;x < arr.length; x++){
var largest = Math.max.apply(Math, arr[x]);
return largest;
}
}
示例:
> function largestOfFour(arr) {
... for(var x=0;x < arr.length; x++){
..... var largest = Math.max.apply(Math, arr[x]);
..... return largest;
..... }
... }
undefined
> largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
5
>
预期产出:
[5, 27, 39, 1001]
答案 0 :(得分:2)
您可以使用ES6 arrow function和spread operator。
arr.map(e => Math.max(...e))
map
将在主数组的所有元素上迭代(即嵌套数组),Math.max(...e)
将返回该数组的max元素。 ...e
会将e
数组的元素分别传递给max()
。
var arr = [ [4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1] ]
var res = arr.map(e => Math.max(...e))
document.write(res);
&#13;
答案 1 :(得分:1)
只需映射单个结果的结果。
function largestOfFour(array) {
return array.map(function (a) {
return Math.max.apply(null, a);
});
}
var largest = largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
document.write('<pre>' + JSON.stringify(largest, 0, 4) + '</pre>');
上面提到的(@Tushar)短版
function largestOfFour(array) {
return array.map(Math.max.apply.bind(Math.max, null));
}
var largest = largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
document.write('<pre>' + JSON.stringify(largest, 0, 4) + '</pre>');