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

112
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 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