Javascript 我如何通过这个算法挑战?

Javascript 我如何通过这个算法挑战?,javascript,algorithm,Javascript,Algorithm,我正在处理freecodecamp的基本算法挑战。挑战在于返回数组中的最大数。这是密码 function largestOfFour(arr) { // You can do this! let largestWord = [0,0,0,0]; for(let i = 0; i < arr.length; i++) { for(let j = 0; j < arr[i].length; j++) { if(arr[i][j] > largest

我正在处理freecodecamp的基本算法挑战。挑战在于返回数组中的最大数。这是密码

function largestOfFour(arr) {
  // You can do this!
  let largestWord = [0,0,0,0];

  for(let i = 0; i < arr.length; i++) {
    for(let j = 0; j < arr[i].length; j++) {
      if(arr[i][j] > largestWord[i]) {
        largestWord[i] = arr[i][j];
      }
    }
  }
  return largestWord;
}

largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
我通过了三项标准:

最大的四个[[4,5,1,3]、[13,27,18,26]、[32,35,37,39]、[10001001857,1]]应该返回一个数组。 通过 最大的四个[[13,27,18,26],[4,5,1,3],[32,35,37,39],[10001001857,1]]应该返回[27,5,391001]。 通过 最大的四个[[4,9,1,3]、[13,35,18,26]、[32,35,97,39]、[10000001001857,1]]应该返回[9,35,971000000]

除了最大的四个[[17,23,25,12],[25,7,34,48],[4,-10,18,21],-72,-3,-17,-10]]外,所有人都应该返回[25,48,21,-3]


我哪里出错了?

看来你可以用和轻松地完成这项任务

函数最大的四个数组{ 返回arr.mapx=>Math.max…x; } 控制台。日志最大值为[4,5,1,3],[13,27,18,26],[32,35,37,39],[10001001857,1];
控制台。对数最大值为[17,23,25,12],[25,7,34,48],[4,-10,18,21],-72,-3,-17,-10] 所以在你的代码中,你在这一块出错了

 if(arr[i][j] > largestWord[i]) {
    largestWord[i] = arr[i][j];
 }
您忘记的是,您有一个最大数字的起始值,即0,并且您将数组元素与该值进行比较。只有超过0的值才能替换该值。因此,我建议只初始化没有值的数组,并对此进行检查

//initialize the array without a value
let largestWord = new Array(4);

for(let i = 0; i < arr.length; i++) {
  for(let j = 0; j < arr[i].length; j++) {

    //also add a check for initial value
    if(arr[i][j] > largestWord[i] || largestWord[i] == undefined) {
     largestWord[i] = arr[i][j];
    }
  }
}

问题很简单!您已将最大值全部设置为0。。。那么哪个更大:0还是[-72,-3,-17,-10]中的任何一个?如果让largestWord=[Number.MIN\u SAFE\u INTEGER,…];如果您愿意坚持您的方法,请让largestWord=Arrayarr.length.fill-Infinity。但下面的答案中建议了一种较短的方法。