我正在js中使用此函数(它应该返回特殊主题):
function getSubjectByNumber(subject_number) {
var subject_name;
if (subject_number === 0) {
return subject_name = "Deutsch";
}
if (subject_number === 1) {
return subject_name = "Englisch";
}
if (subject_number === 2) {
return subject_name = "Latein";
}
if (subject_number === 3) {
return subject_name = "Kunst";
}
if (subject_number === 4) {
return subject_name = "Musik";
}
if (subject_number === 5) {
return subject_name = "Instrument/G. (Additum)";
}
if (subject_number === 6) {
return subject_name = "Französisch (spät.)";
}
if (subject_number === 7) {
return subject_name = "Theater und Film";
}
..//That goes a long time...
}
然后用以下代码行调用return方法:
var subject_name = getSubjectByNumber(subject);
但是正如我所见,它不返回任何内容(''),因为var subject_name
始终为空。我希望有人能帮助我。提前谢谢。
〜mb
答案 0 :(得分:1)
请考虑一个数组。
甚至不需要强制,所以只需执行以下操作-如您所见,0和“ 0”的作用相同
function getSubjectByNumber(subject_number) {
return ["Deutsch","Englisch","..."][subject_number] || "not found";
}
console.log(
0, getSubjectByNumber(0),
"0", getSubjectByNumber("0"),
1, getSubjectByNumber(1),
10, getSubjectByNumber(10) // not found
);
答案 1 :(得分:1)
您正在使用严格相等运算符(===
),该运算符不对操作数进行任何类型转换。如果subject
是一个字符串,那将可以解释它,因为"0" === 0
是false
。在这种情况下,您需要将subject
转换为数字(只要在+
之前加上数字即可)或使用==
进行转换检查是否相等。
但是,如果仅使用数组,则可以消除所有if/then
逻辑以及字符串/数字问题。
let subjects = ["Deutsch", "Englisch", "Latein", "Kunst", "Musik", "Instrument/G. (Additum)", "Französisch (spät.)", "Theater und Film"];
function getSubjectByNumber(subject_number) {
return subjects[subject_number];
}
console.log(getSubjectByNumber(0));
console.log(getSubjectByNumber("0"));
console.log(getSubjectByNumber(6));
console.log(getSubjectByNumber(7));