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

187
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 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