当您尝试找到每个数组的最大值时,问题就在内部循环上。在外循环的每次迭代中,您都应重置
long =arr[k][0]。由于最大值可能小于0,因此不应将其重置为0。请注意,这期望所有子数组至少具有一项。
如@ edc65所指出的那样,的声明
long应在函数的开始处进行,以明确表明
long,作为所有局部变量,都具有函数作用域。
每个子数组只需要一个值。因此,您应该为外循环的每次迭代添加一个值(
main.push应该在外循环中)。目前,您正在为每个子数组元素添加一个值。
在if语句中,您的分配是相反的。它应该是
long = arr[k][i];
并且条件也被反转。
long存储每个子数组的最大值。因此,如果发现 大于 它的值,则更新它:
if(arr[k][i]>long) { long = arr[k][i];}当推入数组时,请使用括号而不是括号:
main.push(long);
括号用于调用方法。括号用于访问对象的属性。
最终代码
function largestOfFour(arr) { var main = []; var long; for(k=0;k<arr.length;k++){ long = arr[k][0]; for(i=0;i<arr[k].length;i++){ if(arr[k][i]>long) { long = arr[k][i]; } } main.push(long); } return main;}[Math.max
](https://developer.mozilla.org/en-
US/docs/Web/Javascript/Reference/Global_Objects/Math/max) 方法
您可以
Math.max用来简化代码
function largestOfFour(arr) { var main = []; for(k=0;k<arr.length;k++){ var long = Math.max.apply(null, arr[k]); main.push(long); } return main;}


