Quiero mejorar más de un "si y otro si". Tengo las condiciones que se mencionan a continuación, pero estoy molesto porque estoy haciendo demasiadas "repeticiones". ¿Cómo puedo arreglar esto?
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] está vacío, establezca "tr" como valor predeterminado 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')Puede tomar un valor predeterminado y compararlo con los idiomas conocidos.
lang ||= "tr"; if (!['ar', 'en', 'tr'].includes(lang)) lang = localStorage.getItem('VueAppLanguage');La expresion
lang !== "tr" || "en" || "ar"no funciona como se esperaba, porque la comparación
lang !== "tr"comprueba solo la primera cadena y nunca la otra para comparar.
Un valor con OR lógico || verificar si el lado izquierdo ( lhs ) es verdadero, como una cadena no vacía u otros (consulte el enlace) y toma solo el siguiente valor si el lhs es falso, lo opuesto a verdadero .
Para comparar una lista (aquí una matriz) de valores, puede tomar Array#includes .