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

119
Views
¿Cómo puedo ordenar una matriz por otra matriz de objetos?

¿Cómo puedo ordenar una matriz por cadena?

 const filter = [ { index: "First" }, { index: "Second" }, { index: "Third" } ] const data = [ { title: 'Apple', index: "Second" }, { title: 'Samsung', index: "First" }, { title: 'BMW', index: "Third" }, { title: 'Apple', index: "Second" }, { title: 'Apple', index: "Second" }, { title: 'Samsung', index: "First" } ]

Resultados previstos:

 const data = [ { title: 'Samsung', index: "First" }, { title: 'Samsung', index: "First" }, { title: 'Apple', index: "Second" }, { title: 'Apple', index: "Second" }, { title: 'BMW', index: "Third" } ]

¿Cómo iterar sobre dos matrices correctamente? ¿Tengo que iterar sobre dos matrices para hacer esto? ¿O hay otra forma de obtener el resultado deseado?

Dadas tres entradas: "Primero", "Segundo", "Tercero", ¿habrá más de estos índices?

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

  • Usando Array#reduce , itere sobre el filter y guarde el atributo de index de cada objeto y su índice en la matriz en un Map
  • Usando Array#sort , ordene data por los valores de los atributos de index del mapa anterior

 const filter = [ { index: "First" }, { index: "Second" }, { index: "Third" } ], data = [ { title: 'Apple', index: "Second" }, { title: 'Samsung', index: "First" }, { title: 'BMW', index: "Third" }, { title: 'Apple', index: "Second" }, { title: 'Apple', index: "Second" }, { title: 'Samsung', index: "First" } ]; const indexSortMap = filter.reduce((map, { index }, i) => map.set(index, i), new Map); data.sort(({ index: a }, { index: b }) => indexSortMap.get(a) - indexSortMap.get(b)); console.log(data);

about 4 years ago · Juan Pablo Isaza Report

0

Use Array#sort con función de comparación personalizada y Array#findIndex con función de devolución de llamada personalizada

 const filter = [ { index: "First",}, {index: "Second",}, {index: "Third",}]; const data = [ { title: 'Apple', index: "Second" }, { title: 'Samsung', index: "First" }, { title: 'BMW', index: "Third" }, { title: 'Apple', index: "Second" }, { title: 'Apple', index: "Second" }, { title: 'Samsung', index: "First" } ]; data.sort((a ,b) => { return filter.findIndex(i => i.index === a.index) - filter.findIndex(i => i.index === b.index); }); console.log(data);

about 4 years ago · Juan Pablo Isaza Report

0

Una posible solución (y simple) es iterar estas dos matrices. Serán empujados de acuerdo con el orden de la matriz de "filtro":

 const sortedArray = [] filter.forEach(fil=> { data.forEach(dat=>{ if(dat.index===fil.index) sortedArray.push(dat) }) }) console.log(sortedArray)
about 4 years ago · Juan Pablo Isaza 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!