如何检查一个值是否在数组中

How to check if a value is in the array

我正在尝试查看 4 个数组之一中是否包含一个值。 房间从前端传递过来,并且 getDay() 假设为 return 从房间传递的那一天。除了 'Friday'.

之外,我似乎无法让这一天成为任何其他值

我怀疑是我的 'if statement'

// lets say that room = 2301;
function getDay(room) {
  var day = '';
  var a = [2301, 2302, 2303, 2304, 2305, 2307, 2306, 2307, 2308, 2309, 201, 202, 123, 204, 205, 206, 124,
    301, 302, 303, 304, 305, 306, 401, 402, 403, 404, 405, 406, 407, 501, 502, 503, 504, 505, 506
  ];

  var b = [2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319, 208, 209, 210, 211, 101, 102, 103,
    307, 308, 309, 310, 311, 312, 408, 409, 410, 411, 412, 413, 414, 507, 508, 509, 510, 511, 512,
    611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 707, 708, 709, 710, 711, 712,
    811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 908, 909, 919, 911, 912, 913, 914,
    1914,
  ];

  var c = [1915, 1916, 1917, 1918, 1919, 1920, 1921, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130,
    2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2717, 2718, 2719, 2720, 2721, 2722, 2723, 2724
  ]

  var d = [2330, 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2338, 2339, 111, 112, 113, 114, 115, 116, 117,
    319, 320, 321, 322, 323, 324, 422, 423, 424, 425, 426, 427, 428, 519, 520, 521, 522, 523, 524
  ];

  if (a.includes(room)) {
    console.log(day);
    return day = 'Monday';
  } else if (b.includes(room)) {
    console.log(day);
    return day = 'Tuesday';
  } else if (c.includes(room)) {
    console.log(day);
    return day = 'Wednesday';
  } else if (d.includes(room)) {
    console.log(day);
    return day = 'Thursday';
  } else {
    console.log(day);
    return day = 'Friday'
  }
}
console.log("Number 2301", getDay(2301));
console.log("String '2301'", getDay("2301"));

但是当我执行代码时 return 天是 'Friday',即使房间号在数组 a 中也是如此。

该函数只有在 room 是数字而非字符串时才能正常工作,因为 includes() 执行严格的相等性检查。解析为函数开头的数字:

room = ParseInt(room);