我有一个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;
}
当我执行此开关时,它总是给我“其他”
答案 0 :(得分:0)
switch (rental_cat) {
case (rental_cat == "Apartment"):
相当于
switch (rental_cat) {
case true:
反过来相当于
if (rental_cat === true)
您没有在case
中添加条件,条件创建为switch
和case
之间的相等检查,因此它应该是这样的:
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);