Me gustaría limpiar mi código pero no puedo. Me gustaría deshacerme de las expresiones ternarias anidadas. Trabajo con react js 17.0.2. ¿Tienes alguna idea para ayudarme?
const buildNewFilters = (query, filtersIndex: Array<string>) => { const newFilters = {}; for (let i = 0; i < filtersIndex.length; i++) { newFilters[filtersIndex[i]] = router.query[filtersIndex[i]] ? typeof router.query[filtersIndex[i]] == ('string' || 'number') ? [router.query[filtersIndex[i]]] : router.query[filtersIndex[i]] : undefined if (filtersIndex[i] === 'designers' && newFilters.designers) { newFilters.designers = newFilters.designers.map(designer => parseInt(designer)); } } return newFilters; };Si no está acostumbrado a trabajar con operadores ternarios, entiendo que no es fácil refactorizar el código. Primero, puede leer sobre qué son las expresiones ternarias y probarlas en la Documentación de Mozilla sobre operadores ternarios . Básicamente, la parte del código antes del ? se evalúa como true o false y si se evalúa como true , se ejecuta la parte anterior al siguiente : (en su caso, se asigna a la variable newFilters[filtersIndex[i]] , de lo contrario, la parte posterior al : se asignará a la variable.
Mi consejo sería colocar la línea que desea refactorizar en un editor de texto para experimentar con ella y agregar saltos de línea y/o tabulaciones después del ? y : signos para ver mejor la estructura y ver lo que sucede en cada paso.
if (router.query[filtersIndex[i]]) { if (typeof router.query[filtersIndex[i]] == ("string" || "number")) { newFilters[filtersIndex[i]] = [router.query[filtersIndex[i]]]; } else { newFilters[filtersIndex[i]] = router.query[filtersIndex[i]]; } } else { newFilters[filtersIndex[i]] = undefined; }