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

137
Vistas
Combinar valores de las mismas claves en JS

Tengo un conjunto de datos como el siguiente.

 [ {-a: '-ess. (form feminine singular nouns.)'}, {-a: '(form the feminine singular adjectives.)'}, {-a: '(form the second-person singular.)'}, {-aba: 'first-person singular'}, {-aba: 'third-person singular'}, ... ]

Quiero tener un objeto que deba convertirse al formato de un solo objeto, como el siguiente.

 { -a: '(form the second-person singular.)', -aba: 'third-person singular', ... }

Lo anterior es el resultado de Object.assign({}, ...array) .

Pero aquí falta algo, sí, algunos datos se han recortado accidentalmente de los datos originales anteriores. Este no es un resultado deseado.

Ahora tengo un obj que tiene un valor combinado (de alguna manera) en cada clave. El siguiente es un ejemplo que preferiría.

 { -a: '-ess. (form feminine singular nouns.)\n(form the feminine singular adjectives.)\n(form the second-person singular.)', -aba: 'first-person singular\nthird-person singular', ... }

Entonces, ¿cómo puedo lograr esto? Gracias.

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

0

Puede usar Array.reduce(...) en sus datos y luego recorrer cada objeto para agregarlos al valor reducido en consecuencia.

Además, su matriz original necesita algunas " comillas " en las claves de objeto; de lo contrario, no se ejecutará:

 const DATA = [ {"-a": '-ess. (form feminine singular nouns.)'}, {"-a": '(form the feminine singular adjectives.)'}, {"-a": '(form the second-person singular.)'}, {"-aba": 'first-person singular'}, {"-aba": 'third-person singular'}, ]; const merge = (data) => { // reduce the array down to a single object return data.reduce((acc, curr) => { // loop over the entries of each object Object.entries(curr).forEach(([key, value]) => { // if this key already exists, append to it with \n if(acc[key] != null) { acc[key] += `\n${value}`; // else, just add it as is } else { acc[key] = value; } }); return acc; }, {}); } console.log(merge(DATA));

about 4 years ago · Juan Pablo Isaza Denunciar

0

Podrías hacer algo como:

 const input = [ { "-a": '-ess. (form feminine singular nouns.)' }, { "-a": '(form the feminine singular adjectives.)' }, { "-a": '(form the second-person singular.)' }, { "-aba": 'first-person singular' }, { "-aba": 'third-person singular' } ]; // option 1: store values in array const output1 = input.reduce((outObj, item) => { const [key, value] = Object.entries(item)[0]; if (outObj[key]) { outObj[key].push(value); } else { outObj[key] = [value]; } return outObj; }, {}); console.log(output1); // option 2: store values in a single string function myFunc(arr, separator) { return arr.reduce((outObj, item) => { const [key, value] = Object.entries(item)[0]; if (outObj[key]) { outObj[key] += `${separator}${value}`; } else { outObj[key] = value; } return outObj; }, {}); } const output2a = myFunc(input, '\n'); const output2b = myFunc(input, ' | '); console.log(output2a); console.log(output2b);

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