<-- 实现要求 -->
找出多个数组中的最大数
右边大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新数组。
提示:你可以用for循环来迭代数组,并通过arr[i]
的方式来访问数组的每个元素。
当你完成不了挑战的时候,记得开大招'Read-Search-Ask'。
这是一些对你有帮助的资源:
<-- 个人理解 -->
例如存在这样一个数组:[[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]
首先,使用for循环遍历数组中的每一项(即里面的每一个数组),使用Math.max()方法求出里面每一个数组中数值最大的数字,将每一个数值最大的数值在使用push()方法添加到一个新的空数组中。
<-- 遇到的问题 -->
Math.max()传入的参数为数字,可以使2个以上的多个数字,例如:
> Math.max(2,8,6,9,4,1,99);
< 99
当参数为数组时不能直接传入使用。
想到再进行遍历数组,进行比较,返回最大值,也想到用.sort()方法进行由大到小的排序,返回每个数组的第一项(arr[0])即每个数组的最大值,但总觉得还能有更简单的方法实现。
百度查询到可以使用apply()将数组传入,即Math.max.apply(null,arr)的方法可以直接求出arr中的最大值,
使用可以参考:http://www.cnblogs.com/daleizi147/p/8443534.html
例如:
> Math.max.apply([1,5,9,7,41,65,999]);
< 999
<-- 代码部分 -->
1 function largestOfFour(arr) { 2 3 var maxArr = [] 4 5 for(var i=0;i<arr.length;i++){ 6 var max = Math.max.apply(null,arr[i]); 7 maxArr.push(max); 8 } 9 10 return maxArr; 11 } 12 13 largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]); 14