繁体   English   中英

Javascript for 循环未遍历数组或 if 语句中的值未按计划更新

[英]Javascript for loop not iterating across array or values in an if statement not updating as planned

尝试返回任何给定数字中的最高 5 位数字,即 34858299999234 将返回 99999

我想我已经把它缩小到for循环没有正确迭代数组或者'hold1'和'hold2'的值没有更新。


function solution(digits){
  
  //Convert string to array to iterate through
  let arr = digits.split("");
  let final = 0;
  //iterate through the array in 5 sequence steps
  for(let i = 0; i < arr.length-1; i++){
      let hold1 = arr[i] + arr[i+1] +  arr[i+2]  + arr[i+3]  + arr[i+4];
      hold1 = parseInt(hold1,10); //converting string to int so if statement functions correctly
      let hold2 = arr[i+1] + arr[i+2]+ arr[i+3] +  arr[i+4]  + arr[i+5];
      hold2 = parseInt(hold2,10);
          if(hold1 >= hold2){        
             final = hold1;
          }else{
            final = hold2;
          }
    return final;
  }
  
}

如果您需要五位数的结果,则需要更改 for 循环,如下所示:

for (let i = 0; i < arr.length - 5; i++) {

否则,您将生成少于 5 位数的结果。

另外,我认为您缺少将比较两个数字以返回较大数字的Math.max方法。

我用这种方式重写了你的 function:

function solution(digits) {
  let op = 0;
  let length = 5;
  let stringDigits = String(digits); /// <-- I use string instead of array
  if (stringDigits.length <= length) {
    return digits; /// <-- If input is shorter than 5 digits
  }

  for (let i = 0; i < stringDigits.length - length; i++) {
    const fiveDigitsValue = stringDigits.substr(i, length);
    op = Math.max(op, Number(fiveDigitsValue));
  }
  return op;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM