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

105
Visualizações
¿Cómo agregar una lista en el objeto bajo las teclas correspondientes en lugar de reemplazar el contenido?

Vengo de PHP y no puedo realizar en JS. La tarea simple de matrices asociativas se puede hacer en PHP. Tal vez estoy usando un enfoque que no encaja con este lenguaje.

Entonces, tengo un objeto que tengo que reconstruir para futuras necesidades. La información se agrega durante el ciclo.

Digamos que tengo lo siguiente:

array[0] = { empresa: 'kfc', puesto: 'pollo', nombre: 'Andrejs', edad: '20 días' }

array[1] = { empresa: 'kfc', puesto: 'pollo', nombre: 'Alex', edad: '15 días' }

array[2] = { empresa: 'mcdonalds', puesto: 'pollo', nombre: 'Lena', edad: '23 días' }

Deseo obtener la información de la siguiente manera:

 { {kfc: {chicken: {name: "Alex", Age: "15 days"}, {name: "Andrejs", Age: "20 days"} } }, {mcdonalds: { chicken: {name: "Lena", age: 23 days} } } }

Yo he tratado:

  1. Crea un objeto: food = {};
  2. para crear un objeto como este (en ciclo while):
 alimento = {matriz[i].empresa : {matriz[i].posición : {nombre: matriz[i].nombre, edad: matriz[i].edad}}}

Esto no funcionó, porque sobrevalora los datos que se escribieron en la ronda anterior. 3. Cree la variable m para dar una clave única:

 food[m] = {array[i].company : {array[i].position : {name: array[i].name, age: array[i].age}}} m++;

Esto no funcionó porque tenía 3 cadenas separadas en el objeto. 4. Para usar una tecla antes del signo =:

 food[array[i].company][array[i].position] = {name: array[i].name, age: array[i].age}

Esto da un error, porque dichas claves no existen durante la primera ronda.

Revisé algunos tutoriales de objetos, pero no encontré la resolución. Estaré muy agradecido a aquellos que señalarán la forma correcta de crear objetos asociativos en JS.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Puede obtener el resultado deseado usando Array.reduce() , agrupando por company y position .

Para cada elemento, verificamos si hay entradas existentes para esa clave, si no, las creamos.

Cada propiedad de position contendrá una matriz de todas las entradas para esa posición.

 let arr = [ { company: 'kfc', position: 'chicken', name: 'Andrejs', age: '20 days' }, { company: 'kfc', position: 'chicken', name: 'Alex', age: '15 days' }, { company: 'mcdonalds', position: 'chicken', name: 'Lena', age: '23 days' } ]; const output = arr.reduce((acc, { company, position, age, name }) => { // If no existing items are here, create an empty object for this company. acc[company] = acc[company] || { }; // If no existing items are here, create an empty array for this position. acc[company][position] = acc[company][position] || []; // Add the entry for the relevant position acc[company][position].push({ age, name}) return acc; }, {}) console.log(output)
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Relatório

0

Aquí hay un grupo de groupEmployees que organizará la matriz de empleados en un objeto jerárquico:

Enlace de juegos TS

 function groupEmployees (employees) { const group = {}; for (const { age, company, name, position } of employees) { ((group[company] ??= {})[position] ??= []).push({ age, name }); } return group; } const employees = [ { company: 'kfc', position: 'chicken', name: 'Andrejs', age: '20 days' }, { company: 'kfc', position: 'chicken', name: 'Alex', age: '15 days' }, { company: 'mcdonalds', position: 'chicken', name: 'Lena', age: '23 days' }, ]; console.log(groupEmployees(employees));

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