• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

89
Views
Convierta una matriz de objetos en un solo objeto

Tengo la siguiente matriz, por ejemplo:

 [ { name: "abc", value: "1" }, { name: "xyz", value: "2" }, { name: "abc", value: "3" }, { name: "abc", value: "4" }, { name: "xyz", value: "5" }, ]

Ahora, quiero reducir esta matriz a un solo objeto agrupando el value con el mismo name en una matriz. Algo como esto -

 { abc: [1, 3, 4], xyz: [2, 5] }

¿Cómo hago esto usando reduce en JavaScript?

No estoy seguro de si este es el enfoque correcto, pero he intentado algo como esto y no me da el resultado deseado.

 const data = arr.reduce((acc, item) => { return { ...acc, [item.name]: [item.value, acc[item.value]] }; });
about 3 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Estaba en el camino correcto con su respuesta, pero necesita verificar si acc ya tiene una clave de item.name :

 const data = [{ name: "abc", value: "1" }, { name: "xyz", value: "2" }, { name: "abc", value: "3" }, { name: "abc", value: "4" }, { name: "xyz", value: "5" }, ] const result = data.reduce((acc, { name, value }) => ({ ...acc, [name] : [...(acc[name] || []), value] }), {}) console.log(result)

Tenga en cuenta que puede usar la desestructuración de objetos para simplificar el código de acumulación.

about 3 years ago · Juan Pablo Isaza Report

0

 const data=[ { name: "abc", value: "1" }, { name: "xyz", value: "2" }, { name: "abc", value: "3" }, { name: "abc", value: "4" }, { name: "xyz", value: "5" }, ]; const res=data.reduce((a,c)=>{ (a[c.name]??=[]).push(c.value); return a; },{}); console.log(res);

about 3 years ago · Juan Pablo Isaza Report

0

 const data = [{ name: "abc", value: "1" }, { name: "xyz", value: "2" }, { name: "abc", value: "3" }, { name: "abc", value: "4" }, { name: "xyz", value: "5" }, ]; let finalObject = {}; data.forEach((item) => { if (!finalObject.hasOwnProperty(item.name)) { finalObject[item.name] = [item.value]; } else { finalObject[item.name].push(item.value); } }); console.log(finalObject);

Simplemente analice los valores si necesita una cadena a un número y le dará una respuesta

 { abc: [1, 3, 4], xyz: [2, 5] }
about 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error