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

185
Vistas
Cómo recorrer un objeto javascript y sumar cantidades en un nuevo objeto

tengo un objeto javascript

 const data = { type: "FeatureCollection", features: [{ type: "Feature", geometry: { type: "Point", coordinates: [-118.4158548, 33.9811315] }, properties: { name: "John Smith", total_due: 1 } }, { type: "Feature", geometry: { type: "Point", coordinates: [-122.4605458, 37.7286008] }, properties: { name: "June Waters", total_due: 50 } }, { type: "Feature", geometry: { type: "Point", coordinates: [-122.4120835, 37.7778926] }, properties: { name: "John Smith", total_due: 2 } }, { type: "Feature", geometry: { type: "Point", coordinates: [-118.3508279, 34.0701918] }, properties: { name: "June Waters", total_due: 60 } }, { type: "Feature", geometry: { type: "Point", coordinates: [-82.4000143, 34.8518747] }, properties: { name: "Mike Jones", total_due: 30 } }] };

Lo que me gustaría hacer es recorrer el objeto, agregar los nombres únicos a un nuevo objeto y sumar los totales. El nuevo objeto se vería así:

 newObject = {'June Waters':110, 'Mike Jones':30, 'John Smith': 3}

Traté de hacer lo siguiente, pero soy tan nuevo en JS que no sé lo que estoy haciendo.

 var newObject = {} data.features.forEach(function (item) { newObject.item.properties.name = newObject.item.properties.name + item.properties.total_due });

La siguiente es una parte del error que se genera.

 TypeError: Cannot read properties of undefined (reading 'properties') at c:\Users\ryanj\z\const data =.js:10:18 at Array.forEach (<anonymous>)....

Cualquier ayuda o sugerencia sería realmente apreciada.

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

0

se encontró con un error porque newObject.item no está undefined ya que el objeto está vacío, por lo tanto, cualquier propiedad a la que intente acceder más allá de eso, como las properties , no se encuentra

haciendo algunos ajustes a su implementación. Estoy agregando el nombre al newObject si ya no existe, procedo a agregar los totales

 const data = {"type": "FeatureCollection","features": [{"type": "Feature","geometry": {"type": "Point","coordinates": [-118.4158548, 33.9811315]},"properties": {"name": "John Smith","total_due": 1}},{"type": "Feature","geometry": {"type": "Point","coordinates": [-122.4605458, 37.7286008]},"properties": {"name": "June Waters","total_due": 50}},{"type":"Feature","geometry": {"type": "Point","coordinates": [-122.4120835, 37.7778926]},"properties": {"name": "John Smith","total_due": 2}},{"type": "Feature","geometry": {"type": "Point","coordinates": [-118.3508279, 34.0701918]},"properties": {"name": "June Waters","total_due": 60}},{"type": "Feature","geometry": {"type": "Point","coordinates": [-82.4000143, 34.8518747]},"properties": {"name": "Mike Jones","total_due": 30}}]}; var newObject = {} data.features.forEach(function (item) { if(!newObject[item.properties.name])newObject[item.properties.name] = 0; newObject[item.properties.name] = newObject[item.properties.name] + item.properties.total_due }); console.log(newObject)

de manera similar, puede usar reduce para este tipo de problemas

 const data = {"type": "FeatureCollection","features": [{"type": "Feature","geometry": {"type": "Point","coordinates": [-118.4158548, 33.9811315]},"properties": {"name": "John Smith","total_due": 1}},{"type": "Feature","geometry": {"type": "Point","coordinates": [-122.4605458, 37.7286008]},"properties": {"name": "June Waters","total_due": 50}},{"type":"Feature","geometry": {"type": "Point","coordinates": [-122.4120835, 37.7778926]},"properties": {"name": "John Smith","total_due": 2}},{"type": "Feature","geometry": {"type": "Point","coordinates": [-118.3508279, 34.0701918]},"properties": {"name": "June Waters","total_due": 60}},{"type": "Feature","geometry": {"type": "Point","coordinates": [-82.4000143, 34.8518747]},"properties": {"name": "Mike Jones","total_due": 30}}]}; let total = data.features.reduce((acc,curr) =>{ if(!acc[curr.properties.name])acc[curr.properties.name]=0; acc[curr.properties.name]+=curr.properties.total_due; return acc; },{}) console.log(total)

about 4 years ago · Juan Pablo Isaza Denunciar

0

En Javascript, puede hacer referencia a las propiedades de un objeto usando los corchetes [] como lo hacemos en una matriz.

En este código, primero verificamos si la clave ya está definida en el objeto. Si no está definido, simplemente asignaremos el valor de total_due a la clave (que en este caso es el nombre de la persona). En la siguiente iteración, si Javascript reconoce la clave y el valor de la clave no está indefinido, simplemente agregamos el valor total_due al valor de la clave actual.

 let finalData = {} data.features.forEach((item) => { if (finalData[item.properties.name] === undefined) { finalData[item.properties.name] = item.properties.total_due; } else { finalData[item.properties.name] += item.properties.total_due; } })
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