我有一个嵌套循环,大多数情况下都可以正常工作,但对于一个特定的情况,它根本不运行。
这里是失败的值:1, 3-5, 7-10, 22
JS代码:
document.getElementById("myButton").addEventListener("click", function () {
document.getElementById("msg").innerHTML = "";
// Get the short list
var list = document.getElementById("myIn").value;
var sublists = list.split(", ");
var Range = [];
var result = "";
var start; // for the nested loop
var end; // for the nested loop
for (var i = 0; i < sublists.length; i++) {
Range = sublists[i].split("-");
start = Range[0];
end = Range[Range.length-1];
Log("Range: " + Range); // Shows which parts of the sublist the program sees
for (var j = start; j <= end; j++) {
result = result + j + ",";
Log("Result in loop: " + result); // Show which parts make it inside the loop
}
}
result = result.slice(0, -1); // Takes off the extra comma at the end
Log("Result: " + result); // Shows result
});
输入失败的值时,将会得到如下结果:
Range: 1
Result in loop: 1,
Range: 3,5
Result in loop: 1,3,
Result in loop: 1,3,4,
Result in loop: 1,3,4,5,
Range: 7,10 <--- Never goes inside the loop
Range: 22
Result in loop: 1,3,4,5,22,
Result: 1,3,4,5,22
我无法理解为什么跳过了7-10部分。非常感谢您的帮助和解释。
这里是FIDDLE。
Number
方法更加安全,除非您需要过滤掉字符串的一部分或者需要使用非十进制基数进行转换。此外,还有其他原因需要谨慎使用parseInt
方法。 - Jason Cust