Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以简化这个javascript吗?_Javascript_Jquery - Fatal编程技术网

可以简化这个javascript吗?

可以简化这个javascript吗?,javascript,jquery,Javascript,Jquery,我是javascript新手,很抱歉我不太了解。我有以下几点,我想让它更简单。如有任何建议,将不胜感激 if (entity == "house") { primaryKey = store.getItem('accountID') + "02" + "00"; table = "Content"; } if (entity == "street") { primaryKey = store.getItem('accountID') + "0000"; table

我是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";
}

您可以使用switch语句。


这仍然很冗长,但更易于阅读。

您可以使用switch语句。


这仍然是冗长的,但更容易阅读。

您可以使用表驱动的方法来完成,而无需重复这样的代码(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];
}

无论采用哪种方法,您都会想到对实体使用一个查找表,然后对每个实体的不同值使用一个表驱动的方法。

您可以使用一个表驱动的方法,而无需重复这样的代码(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];
}

无论采用哪种方法,您都会想到对实体使用查找表,然后对每个实体的不同值使用表驱动方法。

使用这样的开关状态使用这样的开关状态谢谢。我需要在第一行声明primaryKey吗?我想我已经读过一些地方,在块之后也可以看到块中的javascript变量?可以在每个case语句中声明primaryKey。如果这样做,只需确保在每个case语句中使用var(例如var primaryKey=…)声明变量,因为您不知道哪个语句将实例化该变量。通过在switch语句之外声明它,您只需在一个地方声明变量。谢谢。我需要在第一行声明primaryKey吗?我想我已经读过一些地方,在块之后也可以看到块中的javascript变量?可以在每个case语句中声明primaryKey。如果这样做,只需确保在每个case语句中使用var(例如var primaryKey=…)声明变量,因为您不知道哪个语句将实例化该变量。通过在switch语句之外声明它,您只需在一个地方声明变量。