题目链接:Return Largest Numbers in Arrays
要求:返回嵌套数组中每个数组中的最大的那个数组成的数组。
测试条件:
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].
方法一:使用辅助函数 largestOfArr()
function largestOfFour(arr) {
return arr.map(function(ele,i){
return largestOfArr(ele);
});
}
function largestOfArr(arr){
var max = 0;
var len = arr.length;
for(var i = 0;i < len; i++ ){
if(arr[i] > max){
max = arr[i];
}
}
return max;
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
方法二:使用reduce和map
function largestOfFour(mainArray) {
return mainArray.map(function (subArray){
return subArray.reduce(function (previousLargestNumber, currentLargestNumber) {
return (currentLargestNumber > previousLargestNumber) ? currentLargestNumber : previousLargestNumber;
}, 0);
});
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
代码解释:这里不过是用reduce方法代替了辅助函数。
方法三:使用Math.max()
function largestOfFour(mainArray) {
return mainArray.map(function(subArray) {
return Math.max.apply(null, subArray);
});
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
关于apply的详情查看MDN-apply中的例子部分
网友评论