Tengo una función para preparar una cadena para una consulta de búsqueda. Pero parece tan difícil que se necesita una solución más elegante. ¿Tal vez alguien pueda echar un vistazo y proporcionar algo mejor? Es func original.
export const transformedSortFunc = (sortingPath) => { let transformPath; if (sortingPath) { if (sortingPath[0] === '-') { const sortingValue = get(SORTING_PATH_MAP, sortingPath.slice(1)); transformPath = sortingValue ? `-${sortingValue}` : undefined; } else { transformPath = get(SORTING_PATH_MAP, sortingPath); } } return transformPath || sortingPath; }; const SORTING_PATH_MAP = { asset: 'asset.type' }
Los parámetros de entrada pueden ser
const conditional = [ 'id', 'asset', 'conditional', '-id', '-asset', '-conditional' , ]
Estoy usando lodash.
Para algunas líneas entrantes, necesito agregar una continuación. Para algunos, no. Las líneas pueden tener un signo menos, así que agregué controles adicionales. Termina pareciendo muy complicado.
¿Quizás esto funcione para ti?
tsf=s=>SORTING_PATH_MAP[(s??"").replace(/^-/,"")] ?? s;
tsf()
eliminará un encabezado opcional -
mientras busca en SORTING_PATH_MAP
y usará el resultado si existe; de lo contrario, devolverá s
directamente.
Tal vez una organización diferente:
const transformedSortFunc = (sortingPath) => { if (!sortingPath) return sortingPath; const negative = sortingPath[0] === '-' ? '-' : ''; const sortingValue = negative ? sortingPath.slice(1) : sortingPath; const transformPath = get(SORTING_PATH_MAP, sortingValue); return transformPath ? `${negative}${transformPath}` : sortingPath; };