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

99
Vistas
Ordenar matriz de objetos por matriz de referencia

Tengo dos matrices de objetos, son esencialmente copias, pero la matriz de referencia usa un orden diferente.

 let result = {"articleData":[{"id":"1","identifier":"Article1"},{"id":"2","identifier":"Article2"},{"id":"3","identifier":"Article3"},{"id":"4","identifier":"Article4"},{"id":"5","identifier":"Article5"},{"id":"6","identifier":"Article6"}]}; let resultReference = {"articleData":[{"id":"3","identifier":"Article3"},{"id":"4","identifier":"Article4"},{"id":"1","identifier":"Article1"},{"id":"2","identifier":"Article2"},{"id":"6","identifier":"Article6"},{"id":"5","identifier":"Article5"}]};

Lo que quiero hacer es: actualmente obtengo algunos datos de mi API pero están en el orden incorrecto (cómo están actualmente en la matriz de "resultados"). Quiero que los datos estén exactamente en el mismo orden que la matriz "resultReference", pero ¿cómo puedo lograr esto? ¿Hay un enfoque mínimo?

https://jsfiddle.net/g1rmhq9f/

gracias por cualquier consejo

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

A continuación se presenta una posible forma de lograr el objetivo deseado.

Fragmento de código

 // custom sort method const mySort = (arr, refArr) => ( // use structured-clone to deep-clone "arr" // to avoid mutating/modifying it structuredClone(arr). sort( ( { id: aid }, { id: bid } // de-structure & rename "id" props ) => ( // a's ref-index minus b's ref-index refArr.findIndex(({ id }) => id === aid) - refArr.findIndex(({ id }) => id === bid) ) ) ); let result = {"articleData":[{"id":"1","identifier":"Article1"},{"id":"2","identifier":"Article2"},{"id":"3","identifier":"Article3"},{"id":"4","identifier":"Article4"},{"id":"5","identifier":"Article5"},{"id":"6","identifier":"Article6"}]}; let resultReference = {"articleData":[{"id":"3","identifier":"Article3"},{"id":"4","identifier":"Article4"},{"id":"1","identifier":"Article1"},{"id":"2","identifier":"Article2"},{"id":"6","identifier":"Article6"},{"id":"5","identifier":"Article5"}]}; console.log( "sorted version of result object's articleData array: ", mySort(result?.articleData, resultReference?.articleData) );
 .as-console-wrapper { max-height: 100% !important; top: 0 }

Explicación

Se agregaron comentarios en línea al fragmento anterior.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Suponiendo que "Quiero que los datos estén exactamente en el mismo orden que la matriz "resultReference"" significa que solo desea que la ID esté en orden ascendente, aquí hay una solución mucho más simple:

 let resultReference = {"articleData":[{"id":"3","identifier":"Article3"},{"id":"4","identifier":"Article4"},{"id":"1","identifier":"Article1"},{"id":"2","identifier":"Article2"},{"id":"6","identifier":"Article6"},{"id":"5","identifier":"Article5"}]}; resultReference.articleData.sort(function(a, b) { let id1 = parseInt(a.id); let id2 = parseInt(b.id); return id1 - id2; }) /* Output: { articleData: [ { id: '1', identifier: 'Article1' }, { id: '2', identifier: 'Article2' }, { id: '3', identifier: 'Article3' }, { id: '4', identifier: 'Article4' }, { id: '5', identifier: 'Article5' }, { id: '6', identifier: 'Article6' } ] } */
about 4 years ago · Juan Pablo Isaza 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