我是javascript的新手很抱歉我不太了解。我有以下内容,我想使其更简单。任何建议都将不胜感激。
if (entity == "house") {
primaryKey = store.getItem('accountID') + "02" + "00";
table = "Content";
}
if (entity == "street") {
primaryKey = store.getItem('accountID') + "0000";
table = "Content";
}
if (entity == "city") {
var primaryKey = store.getItem('categoryID');
table = "Reference";
}
if (entity == "location") {
primaryKey = "0001" + store.getItem('examID');
table = "Content";
}
答案 0 :(得分:7)
您可以使用表格驱动的方法,而不是像这样的重复代码(DRY):
var lookupInfo = {
house: {id: "accountID", prefix, "", suffix: "0200", table: "Content"},
street: {id: "accountID", prefix: "", suffix: "0000", table: "Content"},
city: {id: "categoryID", prefix: "", suffix: "", table: "Reference"},
location: {id: "examID", prefix: "0001", suffix: "", table: "Content"}
};
var primaryKey, data = lookupInfo[entity];
if (data) {
primaryKey = data.prefix + store.getItem(data.id) + data.suffix;
table = data.table;
}
除了最小化代码而不重复任何代码之外,还可以轻松地向表中添加更多选项而无需编写任何其他代码。
或者,数据表可以做得更紧凑,虽然不是那么优雅(从纯编程的角度来看,因为硬编码常量)这样:
var lookupInfo = {
house: ["accountID", "", "0200", "Content"],
street: ["accountID", "", "0000", "Content"],
city: ["categoryID", "", "", "Reference"],
location: ["examID", "0001", "", "Content"]
};
var primaryKey, data = lookupInfo[entity];
if (data) {
primaryKey = data[1] + store.getItem(data[0]) + data[2];
table = data[3];
}
无论哪种方式,您都会想到为实体使用查找表,然后使用表驱动方法来为每个实体使用不同的值。
答案 1 :(得分:3)
您可以使用switch语句。 https://developer.mozilla.org/en/JavaScript/Reference/Statements/switch
var primaryKey;
var table = "Content";
switch (entity) {
case "house":
primaryKey = store.getItem('accountID') + "0200";
break;
case "street":
primaryKey = store.getItem('accountID') + "0000";
break;
case "city":
primaryKey = store.getItem('categoryID');
table = "Reference";
break;
case "location":
primaryKey = "0001" + store.getItem('examID');
break;
default:
// do nothing
}
这仍然很冗长,但更容易阅读。