我想改进不止一个"if和else if";。我有下面提到的条件,但我很恼火,因为我做了太多的"重复";。我该怎么解决这个问题?
const locale = window.location.origin;
const pathName = window.location.pathname;
let lang = pathName.toString().split("/")[1];
if (lang === "")
lang = "tr"
else if (lang === "en")
lang = "en"
else if (lang === "ar")
lang = "ar"
else if (lang !== "tr" || "en" || "ar")
lang = localStorage.getItem('VueAppLanguage')
console.log(lang)
const res = await axios.get(locale + '/' + lang + '/categories')
- 如果
pathName.toString().split("/")[1]
为空,则设置"tr〃;作为默认值 - 检查lang是否为任何标准语言
const locale = window.location.origin;
const pathName = window.location.pathname;
let lang = pathName.toString().split("/")[1] || "tr"; // 1
let noStandardLanguage = !["tr","en","ar"].includes(lang); // 2
if (noStandardLanguage)
lang = localStorage.getItem('VueAppLanguage')
console.log(lang)
const res = await axios.get(locale + '/' + lang + '/categories')
您可以使用默认值并对照已知语言进行检查。
lang ||= "tr";
if (!['ar', 'en', 'tr'].includes(lang)) lang = localStorage.getItem('VueAppLanguage');
表达式
lang !== "tr" || "en" || "ar"
没有像预期的那样工作,因为比较
lang !== "tr"
只检查第一个字符串,从不检查另一个字符串进行比较。
逻辑OR||
检查的值是左手边(lhs(是truthy,类似于非空字符串或其他字符串(请参阅链接(,并且如果lhs是falsy(与truthy相反(,则仅取下一个值。
为了比较一个值列表(这里是一个数组(,可以使用Array#includes
。