简单的数组和条件javascript

时间:2015-10-11 14:05:12

标签: javascript arrays

所以我是新手,我需要一些基本的帮助。我想制作一个程序,检查房间是免费还是被带走。我不知道我是否可以在所有免费房间做一个变量,或者我应该这样做另一种方式。我有点坚持解决这个问题。

function action() {
    var room = document.getElementById('text');
    var free = [1, 2, 3];
    if (room.value == free) {
        alert('Hello');
    } else {
        alert('Taken');
    }
}

document.getElementById('button').onclick = function() {
    action();
}

我想问一下,如果可以将变量i输入其他变量与免费房间列表进行比较,那么如何使这项工作呢?

4 个答案:

答案 0 :(得分:2)

您不能只将数字与数组进行比较。您需要检查您的号码是否在阵列中:

if (free.indexOf(room.value) > -1)

另外,假设您正在使用文本字段,则在检查之前,您需要将room.value转换为数字(而不是字符串):

if (free.indexOf(+room.value) > -1)

您可以在MDN上了解有关indexOf()的更多信息。

答案 1 :(得分:1)

if (room.value == free)行将字符串(值)与数组进行比较。这通常不会成真。

要在数组中查找值,请使用Array#indexOf。它进行了严格的比较,因为你在数组中的值是数字,你必须确保你的值也是一个数字。

所以

if (free.indexOf(+room.value) != -1) {
    // Yes it's there
}

一元+是将字符串转换为数字的一种方法。另一个是parseInt,它允许您指定基数(数字基数):

if (free.indexOf(parseInt(room.value, 10)) != -1) {
    // Yes it's there
}

您还有其他选择; this answer列出了各种选项及其优缺点。

答案 2 :(得分:1)

你可以试试这个。更进一步,您可以删除从免费房间列表中取出的房间号码,并将其推送到已经拍摄的房间列表中。

function action() {
  var isRoomAvailable = false;
  var room = document.getElementById('text').value;
  var freeRoom = [1, 2, 3]; // 4-10 are taken rooms.
  var takenRooms = [4, 5, 6, 7, 8, 9, 10];
  for (var i = 0; i < freeRoom.length; i++) {
    if (room == freeRoom[i]) {
      alert('Hello, You can take room '+room);
      isRoomAvailable = true;
      return;
    }
  }
  if (!isRoomAvailable) alert("Sorry, Room number " + room + " is taken");
}



document.getElementById('button').onclick = function() {
  action()
}
Enter Room number(1-10):
<input type="text" id="text" />

<button id="button">Search Room</button>

答案 3 :(得分:1)

您应该使用0和1系统来存储是否有房间。因此,根据您的喜好,0代表被取消,1代表免费,反之亦然。所以它所要做的就是测试阵列中的房间值是0还是1