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

161
Vistas
¿Agregar un par clave/valor al objeto dentro de una matriz de matrices?

Dada la siguiente estructura:

 const data = { "show": "Family Guy", "characters": [ [{name: 'Peter', age: 40, city: 'Quahog'}], [{name: 'Louis', age: 30}], [{name: 'Chris', age: 16}], [{name: 'Stewie', age: 1}] ] }

¿Cómo podemos agregar a cada carácter el par clave/valor de city: 'Quahog' para que el resultado sea el siguiente?

 const item = { "show": "Family Guy", "characters": [ [{name: 'Peter', age: 40, city: 'Quahog'}], [{name: 'Louis', age: 30, city: 'Quahog'}], // city added [{name: 'Chris', age: 16, city: 'Quahog'}], // city added [{name: 'Stewie', age: 1, city: 'Quahog'}] // city added ] }

Intentamos usar:

 let city = data.characters.[0][0].city; costs = _.map(items, (itemArray) => { items = _.map(itemArray, (item) => { if(!item.city) { item.city = city; } });

Pero no funciona según lo previsto y no podemos obtener el resultado deseado. ¿Alguna idea de cómo lograr esto?

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

0

No estoy seguro del motivo de tener estas matrices de un solo elemento, pero esta solución funcionará (le recomendaré que eche un vistazo al proceso que crea este formato de datos, que es un poco extraño)

 const data = { "show": "Family Guy", "characters": [ [{name: 'Peter', age: 40, city: 'Quahog'}], [{name: 'Louis', age: 30}], [{name: 'Chris', age: 16}], [{name: 'Stewie', age: 1}] ] } const city = data.characters.find(characters => characters.find(character => character.city))[0].city const dataWithCities = { ...data, characters: data.characters.map(characters => characters.map(character => character.city ? character : {...character, city})) } console.log(dataWithCities)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Aquí hay otra forma de hacerlo con .reduce() :

 const data = { "show": "Family Guy", "characters": [ [{name: 'Peter', age: 40, city: 'Quahog'}], [{name: 'Louis', age: 30}], [{name: 'Chris', age: 16}], [{name: 'Stewie', age: 1}] ] }; data.characters.reduce((a,c)=> (c[0].city=a[0].city,a)); console.log(data);

Al usar .reduce() sin un segundo argumento, tomará el primer elemento de la matriz como el valor inicial que luego se usa como plantilla para copiar la propiedad .city a todos los demás elementos. El valor de retorno real del método .reduce() se descarta, pero la propia matriz de entrada ( data ) se modifica en el proceso y luego se muestra en la expresión console.log() .

about 4 years ago · Juan Pablo Isaza Denunciar

0

prueba este

 let city = data.characters.[0][0].city; let newdata = []; data.characters.map(items, (itemArray) => { items = _.map(itemArray, (item) => { if(item.city === undefined) { newdata.push({...item , city}); } else { newdata.push({...item}); } }) costs = {...newdata}
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