右边大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新数组。
提示:你可以用for循环来迭代数组,并通过arr[i]
的方式来访问数组的每个元素。
当你完成不了挑战的时候,记得开大招'Read-Search-Ask'。
这是一些对你有帮助的资源:
Comparison OperatorsTEST☟
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]) 应该返回一个数组
largestOfFour([[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]]) 应该返回 [27,5,39,1001].
largestOfFour([[4, 9, 1, 3], [13, 35, 18, 26], [32, 35, 97, 39], [1000000, 1001, 857, 1]]) 应该返回 [9, 35, 97, 1000000].
//自己第一遍,有问题
function largestOfFour(arr) {
var newArr = arr[i][0].join(',');
for(var i = 0;i<arr.length;i++){
arr[i].sort(function(a,b){
return b - a;
});
}
return newArr;
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
//方法1
function largestOfFour(arr){
var results=[];
for(var i = 0;i<arr.length;i++){
var largestNumber = 0;
for(var j = 0;j<arr[i].length;j++){
if(arr[i][j] > largestNumber){
largestNumber = arr[i][j];
/* i = 0,j<arr[0].length=4,arr[0][0]=4 > largestNumber=0,故largestNumber=4;
arr[0][1]=5 > largestNumber=4,故largestNumber=5;
arr[0][2]=1 < largestNumber=5,故largestNumber=5;
arr[0][3]=3 < largestNumber=5,故largestNumber=5.最终largestNumber=arr[0][j]=5.
同理,largestNumber=arr[1][j]=27
largestNumber=arr[2][j]=39
largestNumber=arr[3][j]=1001*/
}
}
results[i] = largestNumber;
}
return results;
}
console.log(largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]));```
//方法2: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]]));```
//方法3:不懂 ??
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]]));```
Copy from https://github.com/freeCodeCamp/freeCodeCamp/wiki/Algorithm-Return-Largest-Numbers-In-Arrays