javascript while循环没有结束

标签 javascript string if-statement while-loop substring

我正在尝试在 JavaScript 中运行以下 while 循环:

function returnSubstring(i, theString) {
    var j = 1;
    while (i > 1) {
        if (theString.charCodeAt(j) == ',') {
            i--;
        }
        else {
            <% System.out.println("nope, not a comma"); %>
        }
        j++;
    }
    var value = theString;
    var subString = value.substring(j, value.indexOf(",", j+1));
    alert(subString);       
}

我只是传递一个索引字符串

returnSubstring(someIndex, someString);

它总是崩溃。我想我至少在 while 循环中进行了一轮。 (我得到 1 '不') 我在这里做错了什么?

当索引为 0 或 1 时它也有效。但其他数字则不然

最佳答案

你应该总是递减i,否则你将永远不会结束循环,并且 J 将出界。另外...您应该var j = 0,否则您将跳过第一个字符。

例如:“文本”i == 2

您开始于:
"T",没有逗号,向前移动ji仍然是2。
"e",没有逗号,向前移动ji仍然是2。
"x",没有逗号,向前移动ji仍然是2。
"t",没有逗号,向前移动ji仍然是2。
""(空字符串),无逗号,j 现在超出范围,向前移动 ji还是2.
^ 这最后一步将永远重复。

相反,将您的代码更改为:

function returnSubstring(i, theString) {
    i = i > theString.length() ? theString.length() : i; // don't go too far.
    var j = 0; // Start at 0
    while (i >= 1) { // `i > 1` is stopping the code 1 character earlier
        if (theString.charCodeAt(j) != ',') { // this `if` is not required
            console.log("nope, not a comma"); // No JAVA code, please
        }
        i--;
        j++;
    }
    var value = theString;
    var subString = value.substring(j, value.indexOf(",", j+1));
    // alert(subString); // not necessary
    return subString; // return the value
}

关于javascript while循环没有结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21096301/

相关文章:

java - 如果一个数字可以被两个数字整除但不能被 java 中的三分之一整除,我该如何显示它?

javascript - jQuery 更新图像 srcs 不工作

string - Flutter/Dart 中单引号和双引号的区别

javascript - 尝试使用 jQuery 检索部分 URL;它有效,但未返回字符串

python - 计算字符串中字符出现的次数

javascript - 检查字符串中字符的 ASCII 码值是否大于或小于前一个字符的 ASCII 码值 - JavaScript

java - 让我的程序返回到 "top"(if 语句)(Java)

javascript - 无法访问 AngularJS 中 ng-model 之外的变量

javascript - 简单但迄今为止无法解决 : Why doesn't my click function work? (Jquery)

javascript - 使用 redux 进行服务端渲染