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

175
Vistas
Obtenga el total de una matriz elegida en ES6

Quería obtener el precio total del productPrice de la matriz de chosenData . Necesito compararlo desde mainData y solo obtener su valor total. Mi problema es que me estoy volviendo indefinido y ¿cómo debo hacerlo y hay una forma más corta de hacerlo?

 const mainData = [ { "id": "4324", "productName": "Apple", "productPrice": 250, }, { "id": "656546b", "productName": "Banana", "productPrice": 500, }, { "id": "5656", "productName": "Soup", "productPrice": 800, } ]; const chosenData = ['5656', '656546b'] const newArray = chosenData.map((value, index) => ({ productPrice: mainData.find((data) => data.id === value) })) console.log(newArray.productPrice)

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

0

En su solución, newArray obtenido a través del mapa es una matriz, y la matriz no tiene el atributo productPrice , por lo tanto, no está definido.

Puede filtrar el objeto con una identificación coincidente y luego resumirlos, por ejemplo:

 mainData.filter(value=>chosenData.includes(value.id)).reduce((acc, cur)=>acc+cur.productPrice, 0)
about 4 years ago · Juan Pablo Isaza Denunciar

0

map devuelve una nueva matriz y no omite ningún elemento. Puede usar reduce y dentro de la devolución de llamada reduce, use find . Si se encuentra un elemento con la misma identificación en maindData, devolverá el objeto sin definir. Si no está indefinido, obtenga el valor y acumule.

 const mainData = [{ "id": "4324", "productName": "Apple", "productPrice": 250, }, { "id": "656546b", "productName": "Banana", "productPrice": 500, }, { "id": "5656", "productName": "Soup", "productPrice": 800, } ]; const chosenData = ['5656', '656546b'] const newArray = chosenData.reduce((acc, curr) => { const findById = mainData.find(item => item.id === curr); findById && (acc += findById.productPrice) return acc; }, 0) console.log(newArray)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Su newArray es una matriz. No puede acceder a su propiedad como newArray.productPrice . Desea calcular un valor de su newArray, por lo que puede usar reduce() . Desarrollando su código

 const mainData = [ { "id": "4324", "productName": "Apple", "productPrice": 250, }, { "id": "656546b", "productName": "Banana", "productPrice": 500, }, { "id": "5656", "productName": "Soup", "productPrice": 800, } ]; const chosenData = ['5656', '656546b'] const newSum = chosenData.map((value, index) => ({ productPrice: mainData.find((data) => data.id === value) })).reduce((agg,x) => { return agg + x.productPrice.productPrice },0); console.log(newSum)

Si no quieres complicarte con demasiadas propiedades puedes usar este código:

 const mainData = [ { "id": "4324", "productName": "Apple", "productPrice": 250, }, { "id": "656546b", "productName": "Banana", "productPrice": 500, }, { "id": "5656", "productName": "Soup", "productPrice": 800, } ]; const chosenData = ['5656', '656546b'] const newSum = chosenData.map((value, index) => mainData.find((data) => data.id === value).productPrice).reduce((agg,x) => agg + x,0); console.log(newSum)

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