Javascript:如何在 if 构造中获得变量可以等于的可能值列表

标签 javascript for-loop or-operator

我希望我的 textarea 的值是 1、2 和 3 的列表,具体取决于提示中提供的数字。但是,它仅适用于每个列表的第一个数字。

list = "";
onclick = function() {
  room = prompt("room");
  if (+room == (108 || 110 || 112 || 401 || 403 || 405 || 600 || 601 || 602 || 603 || 604 || 605 || 606 || 607 || 608 || 611 || 613 || 615 || 617 || 619 || 621)) {
    list += "1";
    document.getElementById("p").value = list;
  }
  if (+room == (205 || 300 || 302 || 304 || 400 || 102 || 408 || 409 || 410 || 411 || 412 || 413 || 614 || 616 || 618 || 625 || 627 || 629)) {
    list += "2";
    document.getElementById("p").value = list;
  }
  if (+room == (301 || 305 || 307 || 310 || 311 || 312 || 313 || 314 || 315 || 316 || 317 || 320 || 321 || 323 || 324 || 325 || 326 || 327 || 331 || 404 || 501 || 512)) {
    list += "3";
    document.getElementById("p").value = list;
  }
};
<textarea id="p" /></textarea>

最佳答案

您可以将这些值放在一个数组中,然后在此处使用 .indexOf(),例如:

if([108,110,112,401,403,405,600,601,602,603,604,605,606,607,608,611,613,615,617,619,621].indexOf(parseInt(room)) >= 0){
    list+="1";
    document.getElementById("p").value=list;
    }

关于Javascript:如何在 if 构造中获得变量可以等于的可能值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45242477/

相关文章:

javascript - 扩展,但针对对象而不是类

c# - for-loop 以覆盖基于步进符号增加/减少的范围

r - bool 运算符 && 和 & 之间的区别以及 || 之间的区别和 |在R中

javascript - 为什么异步函数中的连续 setState 调用不进行批处理?

javascript - 从 XML 中获取特定元素

c - 将 char 赋值给 int

python - 从列表中计算字符串中元素的出现次数?

java - 或管道不工作?

sql - OR 子句影响 AND 子句?

javascript - CouchDB 文档中的求和值