找出多个数组中的最大数
右边大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新数组。
提示:你可以用for循环来迭代数组,并通过arr[i]的方式来访问数组的每个元素。
当你完成不了挑战的时候,记得开大招'Read-Search-Ask'。
这是一些对你有帮助的资源:
Comparison Operators
方法一
function largestOfFour(arr) {
// 请把你的代码写在这里
var arr1=[];
for(var i=0;i<arr.length;i++){ //遍历数组
arr[i].sort(function(a,b){ //对每个子数组进行升序排序
return a-b;
});
arr1.push(arr[i][arr.length-1]); //将升序排序后的数组的最大的元素写入arr1数组中
}
return arr1; //返回arr1数组即为所要求的结果
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);// [5, 27, 39, 1001]
注意:
①:.sort()是对数组的引用。数组在原数组上进行排序,不生成副本。
方法二 .map()函数和.reduce()函数
function largestOfFour(arr){
return arr.map(function(group){
return group.reduce(function(prev,current){
return (current > prev) ? current : prev;
},0)
})
}
console.log(largestOfFour([[4,5,1,3],[13,27,18,26],[32,35,37,39],[1000,1001,857,1]]));
方法三:代码简单 待理解
function largestOfFour(arr) {
return arr.map(Function.apply.bind(Math.max, null));
}
console.log(largestOfFour([[4,5,1,3],[13,27,18,26],[32,35,37,39],[1000,1001,857,1]]));
现在.bind还没学到.apply还没怎么用过,以后看到要亲自写一遍
网友评论