Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

182
Visualizações
Mejor forma de convertir a minúsculas solo si es de tipo cadena

Necesito ordenar una tabla que tiene columnas de diferentes tipos de datos. El problema de ordenar las cadenas es que distinguen entre mayúsculas y minúsculas. el codigo original es

 const Details = sortWith( sortDir === 'ASC' ? ascend((row) => row.data[col]) : descend((row) => row.data[col]) )

y lo actualicé a lo siguiente que funciona

 const Details = sortWith( sortDir === 'ASC' ? ascend((row) => typeof row.data[col] === 'string' ? row.data[col].toLowerCase() : row.data[col]) : descend((row) => typeof row.data[col] === 'string' ? row.data[col].toLowerCase() : row.data[col]) )

¿Hay una mejor manera de hacer esto?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Bienvenido a Stack Overflow. Por favor, en el futuro, intente publicar un ejemplo mínimo reproducible con su pregunta.

No estoy seguro de si esto ayudará, pero aquí hay un generador de funciones de clasificación basado en la configuración, construido sobre las capacidades de clasificación de Ramda:

 const mySorter = (config) => sortWith (config .map ( ({col, sortDir = 'ASC'}) => (sortDir == 'ASC' ? ascend : descend) (pipe (path (['data', col]), when (is (String), toLower))) )) const data = [{data: {first: 'Fred', last: 'Flintstone', age: 31}}, {data: {first: 'Wilma', last: 'Flintstone', age: 29}}, {data: {first: 'pebbles', last: 'flintstone', age: 1}}, {data: {first: 'Barney', last: 'Rubble', age: 29}}, {data: {first: 'bambam', last: 'Rubble', age: 1.5}}, {data: {first: 'Betty', last: 'Rubble', age: 33}}] console .log ( mySorter ([{col: 'age'}, {col: 'last', sortDir: 'DESC'}]) (data) ) console .log (mySorter ([{col: 'first'}]) (data))
 .as-console-wrapper {max-height: 100% !important; top: 0}
 <script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.28.0/ramda.min.js"></script> <script>const {sortWith, ascend, descend, pipe, path, when, is, toLower} = R</script>

La parte sobre poner en minúsculas solo las cadenas es when (is (String), toLower) , que parece eminentemente legible.

about 4 years ago · Juan Pablo Isaza Relatório

0

Si desea evitar repetirse en la clasificación, puede aislar la función typecheck:

 const stringCheck = (row) => typeof row.data[col] === 'string' ? row.data[col].toLowerCase() : row.data[col]

y entonces:

 const Details = sortWith( sortDir === 'ASC' ? ascend(stringCheck) : descend(stringCheck) )
about 4 years ago · Juan Pablo Isaza Relatório

0

Puede usar la llamada de función opcional, se ejecutará solo si ese método está definido para el tipo:

 row.data[col].toLowerCase?.() ?? row.data[col]

La llamada de función opcional devolverá undefined si el método no está definido, por esta razón necesitamos ?? row.data[col] para recuperar el valor anterior.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda