[英]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.