题目:
请返回一个数组,该数组由参数中每个子数组中的最大数字组成。 为简单起见,给出的数组总会包含 4 个子数组。
别忘了,你可以通过 for 循环遍历一个数组,并用 arr[i]
的写法来访问数组中的元素。
数组:[[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]];
思路一:
1.根据题目要求,需要用for循环遍历数组中的子数组。需要两层循环嵌套。第一层for循环,遍历外部数组中的子数组,第二层for循环,遍历子数组中的元素。
2.需要创建两个变量。第一个变量是一个空数组,用来储存取出的多个数组中的最大数字。第二个变量是初始化最大数字为这个数组中的第一个元素,可以命名为largestNumber。第二个变量放在内部for循环中。
这里要注意:不能将largestNumber初始化为0,而是要初始化为子数组中的第一个元素。如果以0为起点,当子数组中有负数时,会导致最终的结果不正确。而将largestNumber初始化为子数组中的第一个元素。我们可以确保从我们可以确保从子数组的实际值开始比较,而不是从一个可能不相关的值(如 0)开始。这样可以确保我们找到的是子数组中的实际最大值,而不是一个错误的值(如 0)。牢记在判断条件下largestNumber的值是动态并实时更新的。
3.在内部for循环中加入if语句。当当前元素大于largestNumber,则更新largestnumber。
function findMaxNumber(arr) { //定义一个名为 findMaxNumber 的函数,它接受一个名为 arr 的参数。
let newArr = []; //初始化一个空数组 results,用于存储每个子数组的最大值。
for (let i = 0; i < arr.length; i++) { //使用 for 循环遍历 arr 的每个子数组。
let largestNumber = arr[i][0]; //初始化 largestNumber 为当前子数组的第一个元素。
for (let j = 0; j <arr[i].length; j++) { //使用内部 for 循环遍历当前子数组的其余元素。
if (arr[i][j] > largestNumber) { //如果当前元素大于 largestNumber,则更新 largestNumber。
largestNumber = arr[i][j]; //更新 largestNumber 的值。
} //结束 if 语句。
} //结束内部 for 循环。
newArr[i] = largestNumber; //将 largestNumber 添加到 newArr 数组中。
} //结束外部 for 循环。
return newArr; //返回包含每个子数组最大值的 newArr 数组。
} //结束函数。