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

139
Visualizações
¿La mejor manera de reorganizar una matriz de objetos?

Tengo una matriz u objeto que servirá como columnas para una tabla con una clave única

 const list = [{ key: "Name", textColor: "red" },{ key: "Age", textColor: "green" },{ key: "Occupation", textColor: "yellow" }]

Y tengo una lista de ordenamiento de columnas en la tabla.

 const newOrder = ["Occupation", "Name", "Age"]

Ahora, ¿cómo puedo reorganizar la lista de acuerdo con el nuevo orden sin usar nested loops ? Además, todos estos son dinámicos, por lo que no se trata solo de las tres columnas mencionadas anteriormente

Rendimiento esperado

 const list = [{ key: "Occupation", textColor: "yellow" },{ key: "Name", textColor: "red" },{ key: "Age", textColor: "green" }]
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Puedes usar solo ordenación regular

 const list = [{key: "Name",textColor: "red"},{key: "Age",textColor: "green"},{key: "Occupation",textColor: "yellow"}]; const newOrder = ["Occupation", "Name", "Age"]; const result = list.sort(({key: a}, {key: b}) => newOrder.indexOf(a) - newOrder.indexOf(b)); console.log(result);
 .as-console-wrapper{min-height: 100%!important; top: 0}

about 4 years ago · Juan Pablo Isaza Relatório

0

Su lista se puede reformatear a un objeto javascript normal en el que la key es el nombre de la propiedad y textColor es el valor:

 const toObject = kvps => Object.fromEntries(kvps.map(kvp => [ kvp.key, kvp.textColor ]));

Con una matriz dada de claves, puede elegir valores de ese objeto de la siguiente manera:

 const fromObject = (order, obj) => order.map(key => ({ key, textColor: obj[key] }));

Encadene los dos y podrá reordenar cualquier lista de pares de valores clave:

 const list = [{ key: "Name", textColor: "red" },{ key: "Age", textColor: "green" },{ key: "Occupation", textColor: "yellow" }] const toObject = kvps => Object.fromEntries(kvps.map(kvp => [ kvp.key, kvp.textColor ])); const fromObject = (order, obj) => order.map(key => ({ key, textColor: obj[key] })); const reorder = (order, kvps) => fromObject(order, toObject(kvps)); const newList = reorder(["Occupation", "Name", "Age"], list); console.log( newList )

Editar: si los tamaños de su lista y las matrices de pedidos son pequeños, probablemente desee optar por el enfoque mucho más fácil de leer sugerido por Jon Webb en una de las otras respuestas. 🙂 Traté de mantener mi solución en una complejidad O(n + m) en lugar de O(n * m), (n = tamaño de la lista, m = tamaño del pedido) pero probablemente no valga la pena la complejidad adicional.

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede iterar en la lista de "pedidos", encontrar el elemento correspondiente en la lista original y enviar el elemento a la nueva lista en ese orden:

 const orderList = (list, order) => { const newList = []; for (key of order) { const item = list.find((obj) => obj.key == key); if (item) newList.push(item); } return newList; }
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