Actualmente estoy tratando de sumar algunos valores en una matriz de objetos, según la identificación de otra matriz presente en la matriz actual. suponiendo que tengo esta matriz
const queryArray = [ "1" , "2" ]y esta es la matriz que me gustaría sumar si los valores de propiedad de las tarifas de la identificación coinciden
const services = [ { Id: "1", services: "Early Check-In", fees: "7500" }, { Id: "2", services: "Late Checkout", fees: "7500" }, { Id: "3", services: "Airport Chauffeur", fees: "25000" } ]por lo tanto, me gustaría obtener la suma del valor de la propiedad de las tarifas en la matriz de servicios aquí en función de la identificación disponible en queryArray. entonces en este caso
[ "1" , "2" ]debería volver
15000si decidiera usar esto a continuación
[ "1" , "3" ]debería volver
32500y si tambien lo haces
[ "1", "2" , "3"]debería volver
40000Soy nuevo en javascript, por lo que ni siquiera puedo pensar en ninguna solución posible o en el paso a seguir.
Claro, filter los servicios que necesita -> map el servicio a su valor -> reduce la lista resultante a un solo número agregando los elementos:
const services = [ { Id: "1", services: "Early Check-In", fees: "7500" }, { Id: "2", services: "Late Checkout", fees: "7500" }, { Id: "3", services: "Airport Chauffeur", fees: "25000" } ] const ids = ["1" , "2"] console.log( services .filter(({Id}) => ids.includes(Id)) .map(({fees}) => parseFloat(fees)) .reduce((acc, fees) => acc + fees, 0) )Verifique si la identificación está incluida en la matriz de identificación dentro del reductor:
const services = [ { Id: "1", services: "Early Check-In", fees: "7500" }, { Id: "2", services: "Late Checkout", fees: "7500" }, { Id: "3", services: "Airport Chauffeur", fees: "25000" } ] const queryArray = [ "1" , "2" ] const res = services.reduce((a,b) => queryArray.includes(b.Id) ? a += +b.fees : a, 0) console.log(res)También puede usar reduce, y para cada entrada verifique si el Id. del valor actual está en queryArray. Si es así, devuelva el total actual más las tarifas actuales.
Establezca un 0 como valor inicial.
const services = [{ Id: "1", services: "Early Check-In", fees: "7500" }, { Id: "2", services: "Late Checkout", fees: "7500" }, { Id: "3", services: "Airport Chauffeur", fees: "25000" } ] const queryArray = ["1", "2"] let res = services.reduce( (total, curr) => queryArray.includes(curr.Id) ? total + parseInt(curr.fees, 10) : total, 0 ); console.log(res);