交换机在javascript中无法正常工作

时间:2017-05-12 13:55:29

标签: javascript

我有一个switch语句,有几种情况。这些情况比较值并将文本分配给变量。但是当我尝试执行此开关时,它总是执行默认情况。但我的情况是真的..为什么?

这是我的价值

Apartment

这是我的代码

var rental_cat = $('#rentals_type').val();
alert(rental_cat);
var rental_type = "";
switch (rental_cat) {
case (rental_cat == "Apartment"): 
    rental_type='daily';
    alert(rental_type);
    break;
case (rental_cat == "Office"):
    rental_type='work_daily';
    alert(rental_type);
    break;
default:
    rental_type='other';
    alert(rental_type);
    break;
}

当我执行此开关时,它总是给我“其他

2 个答案:

答案 0 :(得分:0)

switch (rental_cat) {
  case (rental_cat == "Apartment"): 

相当于

switch (rental_cat) {
  case true: 

反过来相当于

if (rental_cat === true)

您没有在case中添加条件,条件创建为switchcase之间的相等检查,因此它应该是这样的:

switch (rental_cat) {
  case "Apartment":

答案 1 :(得分:0)

交换机不是处理此问题的正确结构。在这里,我推荐一张地图:

var rentalTypesByCat = {
    DEFAULT:        "other",

    "Apartement":   "daily",
    "Office":       "work_daily",
}

var rental_cat = $('#rentals_type').val();
console.log("rental_cat:", rental_cat);

var rental_type = rentalTypesByCat[rental_cat] || rentalTypesByCat.DEFAULT;
console.log("rental_type:", rental_type);

或者如果您需要它更明确一些(例如因为您的某些映射值本身可能是假的):

var rental_type = rentalTypesByCat[rental_cat in rentalTypesByCat? rental_cat: "DEFAULT"];
console.log("rental_type:", rental_type);