重构之对象映射类型
写代码的时候,遇到多重条件分支的时候,使用if else if肯定不如 switch 好用,但 switch 又避免不了 break 语句。但如果只是将数据转化的话,不妨使用对象映射的形式来替换
需求
题型对应的数字转化 将单选 0 多选 1 填空 2 判断 3 简答 4 其他类型-1 转化为 单选 1 多选 2 判断 3 填空 4 简答 5 其他类型-1
目的:前者是其他来源的题目题型标记,而后者是存入数据库的题目标记。
代码
if else if 语句
let ti = {
title: '题目',
answer: '答案',
type: null,
};
let type = 0;
if (type === 0) {
ti.type = 1;
} else if (type === 1) {
ti.type = 2;
} else if (type === 2) {
ti.type = 3;
} else if (type === 3) {
ti.type = 4;
} else if (type === 4) {
ti.type = 5;
} else {
ti.type = -1;
}
console.log(ti.type); // 1
swtich 语句
let ti = {
title: '题目',
answer: '答案',
type: null,
};
let type = 0;
switch (type) {
case 0:
ti.type = 1;
break;
case 1:
ti.type = 2;
break;
case 2:
ti.type = 3;
break;
case 3:
ti.type = 4;
break;
case 4:
ti.type = 5;
break;
default:
ti.type = -1;
break;
}
console.log(ti.type); // 1
显而易见 上面的代码写的很臃肿,并且可读性很差,万一这时候有道题型对应数字的发生了改变,就很容易改错。
不妨定义一个对象,用于映射不同的题目题型,像下面这样
let ti = {
title: '