从无限的while循环中中断,为什么此代码不起作用

时间:2018-09-02 07:09:20

标签: javascript arrays while-loop

我试图在用户输入5时使while循环中断,但是为什么此代码不起作用:

var arr = [];
while(!arr.includes(5)){
    arr.push(prompt("Enter a Number"));

}
alert("NUmber is here"); 

4 个答案:

答案 0 :(得分:0)

prompt将始终返回字符串,而不是数字。更改为:

while(!arr.includes('5')){

var arr = [];
while(!arr.includes('5')){
    arr.push(prompt("Enter a Number"));

}
alert("NUmber is here"); 

答案 1 :(得分:0)

从提示符返回的值是一个字符串,因此将其转换为数字然后进行检查

var arr = [];
while(!arr.includes(5)){
    arr.push(parseInt(prompt("Enter a Number")));

}
alert("NUmber is here");

答案 2 :(得分:0)

@{ var service = Context.RequestServices.GetService(typeof(Microsoft.AspNetCore.Hosting.IHostingEnvironment)) as Microsoft.AspNetCore.Hosting.IHostingEnvironment; } <span>Environment: @service.EnvironmentName</span> <span>WebRootPath: @service.WebRootPath</span> 方法使用严格相等(includes)检查数组中是否有特定值。 ===将始终返回字符串,而不是数字,因此整数5将永远不在数组中。但是,字符串“ 5”将是。

当您将代码更改为prompt时(正如SomePerformance指出的那样,它将起作用。

答案 3 :(得分:0)

var arr = [];
while(!arr.includes(5)){
  var num = parseInt(prompt("Enter a Number"));
  arr.push(num);
}
alert("NUmber is here");

或者您可以使用:

var arr = [];
while(!arr.includes('5')){
  arr.push(prompt("Enter a Number"));
}
alert("NUmber is here");

因为严格包含检查相等性。