Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

160
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda