Return 使用扩展语法的数组中的最大数字
Return Largest Number in Array using spread syntax
我正在尝试使用此函数在每个子数组中找到最大的数字:
/* jshint esversion: 6 */
function largestOfFour(arr) {
var max=[];
for(var i=0; i<arr.length; i++){
for(var j=0; j<arr[i].length; j++){
max.push(Math.max(...arr[j]));
}
}
return max;
}
largestOfFour([[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
但是当我运行它的时候,结果其实是每个子数组中最大的数,只是重复了4次,像这样:
[27,5,39,1001,27,5,39,1001,27,5,39,1001,27,5,39,1001]
我不确定为什么。我想知道我做错了什么,谢谢。
您不需要第二个循环:
/* jshint esversion: 6 */
function largestOfFour(arr) {
var max=[];
for(var i=0; i<arr.length; i++){
max.push(Math.max(...arr[i]));
}
return max;
}
console.log(largestOfFour([[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]]));
Array#map
数组中每个子数组的最大值:
function largestOfFour(arr) {
return arr.map((sub) => Math.max(...sub));
}
console.log(largestOfFour([[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]]));
您也可以按照 Haskellesque 模式匹配方式递归执行以下操作;
function getLargests([x,...xs]){
return [Math.max(...x)].concat(xs.length ? getLargests(xs) : []);
}
var arr = [[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]];
console.log(getLargests(arr));
我正在尝试使用此函数在每个子数组中找到最大的数字:
/* jshint esversion: 6 */
function largestOfFour(arr) {
var max=[];
for(var i=0; i<arr.length; i++){
for(var j=0; j<arr[i].length; j++){
max.push(Math.max(...arr[j]));
}
}
return max;
}
largestOfFour([[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
但是当我运行它的时候,结果其实是每个子数组中最大的数,只是重复了4次,像这样:
[27,5,39,1001,27,5,39,1001,27,5,39,1001,27,5,39,1001]
我不确定为什么。我想知道我做错了什么,谢谢。
您不需要第二个循环:
/* jshint esversion: 6 */
function largestOfFour(arr) {
var max=[];
for(var i=0; i<arr.length; i++){
max.push(Math.max(...arr[i]));
}
return max;
}
console.log(largestOfFour([[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]]));
Array#map
数组中每个子数组的最大值:
function largestOfFour(arr) {
return arr.map((sub) => Math.max(...sub));
}
console.log(largestOfFour([[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]]));
您也可以按照 Haskellesque 模式匹配方式递归执行以下操作;
function getLargests([x,...xs]){
return [Math.max(...x)].concat(xs.length ? getLargests(xs) : []);
}
var arr = [[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]];
console.log(getLargests(arr));