Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

162
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!