Return Largest Numbers in Arrays
题目如下:
function largestOfFour(arr) {
// 请把你的代码写在这里
return arr;
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
还是老规矩,先用for循环来实现需求,代码如下:
需要注意的是,下面两种写法,逻辑上都是一样的,只是在sort()方法上写法不一样,千万不要搞混了。
第一种方法:
思路是通过第一层的for循环来遍历数组;
然后通过sort()降序来将每个数组里的值从大到小,降序排列;
最后,将每个数组的第一项 push()到外部定义的空数组中,然后return 这个数组。
function largestOfFour(arr) {
var arr1 = [];
for(var i = 0; i < arr.length; i++){
var arr2 = arr[i].sort(function(m,n){ //将sort()返回的数组定义给arr2,那么,下面push()的时候
return n - m; //只用写 arr2[0]
});
arr1.push(arr2[0]);
}
console.log(arr1);
return arr1;
}
function largestOfFour(arr) {
var arr1 = [];
for(var i = 0; i < arr.length; i++){
arr[i].sort(function(m,n){ // sort()返回的数组没有定义给其他变量,所以,在push()的时候,需要
return n - m; // 写 arr[i][0]
});
arr1.push(arr[i][0]);
}
console.log(arr1);
return arr1;
}
第二种方法:
这种方法比上一种麻烦一点,但理解起来更容易;
采用的是循环套循环的方式,先遍历外围的大数组;
然后,将第一遍遍历出来的数组中,再遍历一边,取数组中的最大值;
这里是在第一次遍历的时候,初始化 num为0的值,是为了方便与数组中其他值比较;
但这种方式有一个很大的问题,加入传进来的数组不是二维数组,是多维数组,
那么for循环就要嵌套多层,陷入循环陷阱;所以,第二种方法要视情况来使用。
function largestOfFour(arr) {
var arr1 = [];
for(var i = 0; i < arr.length; i++){
var num = 0;
for(var k = 0; k < arr[i].length; k++){
if(arr[i][k] > num){
num = arr[i][k];
}
}
arr1.push(num);
}
return arr1;
}
第三种方法:
function largestOfFour(arr) {
// 请把你的代码写在这里
var a=[];
function num(a){
var s=a[0];
for(var i=1;i<a.length;i++){
a[i]>s && (s=a[i]);
}
return s;
}
return arr.map(num);
}
第四种方法:
function largestOfFour(arr) {
return arr.map(function(arr1) {
return Math.max.apply(null, arr1);
});
}
第五种方法:
function largestOfFour(arr) {
return arr.map(function (arr1){
return arr1.reduce(function (a, b) {
return (b > a) ? b : a;
}, 0);
});
}
版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。