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

163
Visualizações
Cómo ordenar una matriz de objetos según la subcadena de valores de propiedad

¿Cómo puedo ordenar la siguiente matriz, en un orden personalizado, según las últimas 3 letras de prop2 que deben estar en este orden 'ABR', 'FDE', 'ZFR' y también en orden descendente 'ZFR', ' FDE', 'ARB' para otra matriz.

Ejemplo de entrada:

 const arr = [ { prop1: 3, prop2: '3FDE' }, { prop1: 4, prop2: '5ZFR' }, { prop1: 5, prop2: '7ABR' } ]

Rendimiento esperado:

 const arr1 = [ { prop1: 5, prop2: '7ABR' }, { prop1: 3, prop2: '3FDE' }, { prop1: 4, prop2: '5ZFR' } ] and const arr2 = [ { prop1: 4, prop2: '5ZFR' }, { prop1: 3, prop2: '3FDE' }, { prop1: 5, prop2: '7ABR' } ]
about 4 years ago · Santiago Gelvez
3 Respostas
Responde à pergunta

0

Puede usar los métodos Array#sort , String#substring o String#slice o String#substr y String#localCompare de la siguiente manera:

  • substring

 const arr = [ {prop1:4, prop2:'5ZFR'}, {prop1:5, prop2:'7ABR'}, {prop1:3, prop2:'3FDE'} ]; const output = arr.sort( (a,b) => a.prop2.substring(1).localeCompare( b.prop2.substring(1) ) ); console.log( output );

Con slice o substr puede usar una n negativa para indicar los últimos n caracteres:

 const arr = [ {prop1:4, prop2:'5ZFR'}, {prop1:5, prop2:'7ABR'}, {prop1:3, prop2:'3FDE'} ]; const output = arr.sort( (a,b) => a.prop2.slice(-3).localeCompare( b.prop2.slice(-3) ) ); console.log( output );

about 4 years ago · Santiago Gelvez Relatório

0

  • Usando Array#sort , itere sobre la matriz para ordenarla
  • En cada iteración, use String#substr para obtener los últimos 3 caracteres y String#localeCompare para comparar las dos cadenas.

 const arr = [ { prop1: 3, prop2: '3FDE' }, { prop1: 4, prop2: '5ZFR' }, { prop1: 5, prop2: '7ABR' } ]; const _getLastThree = (str = '') => str.substr(str.length - 3); const res = arr.sort(({ prop2: a }, { prop2: b }) => _getLastThree(a).localeCompare(_getLastThree(b)) ); console.log(res);

about 4 years ago · Santiago Gelvez Relatório

0

Simplemente use .localeCompare() en combinación con .slice() :

 const arr=[ {prop1:5, prop2:'7ABR'}, {prop1:3, prop2:'3FDE'}, {prop1:4, prop2:'5ZFR'}, ] var ascArr,dscArr; console.log(ascArr=arr.slice(0).sort((a,b)=>a.prop2.slice(-3).localeCompare(b.prop2.slice(-3)))); // for descending order just do console.log(dscArr=arr.slice(0).sort((a,b)=>-a.prop2.slice(-3).localeCompare(b.prop2.slice(-3)))); // or reverse the resulting array with console.log(dscArr=ascArr.reverse());

Tenga en cuenta que los dos métodos slice() pertenecen a diferentes prototipos : .slice(0) es un método Array que esencialmente crea una copia plana de la matriz original, mientras que .slice(-3) es un método String que "elimina" el últimos tres caracteres de la cadena.

about 4 years ago · Santiago Gelvez 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