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

196
Vistas
javascript encuentra objetos anidados en otra matriz y hace matemáticas

Necesito encontrar los dos objetos anidados de la matriz 'productos.accesorios' en la matriz 'accesorios' y verificar su moneda para multiplicar con paridad, verificar su unidad para multiplicar con 'productos.propiedades.longitud', multiplicar cada uno con su 'cantidad' y suma su resultado.

Cualquier sugerencia es muy apreciada. Gracias.

 var accessories = [{ name: 'Accessory-1', currency: 'eur', price: 1, unit: 'm' }, { name: 'Accessory-2', currency: 'usd', price: 2, unit: 'pcs' }]; var products = [{ name: 'Product', properties: [{ no: 'Product-1', length: '2000', accessories: [{ name: 'Accessory-1', qty: 1 }, { name: 'Accessory-2', qty: 1 }] }] }];
 // currencies let eurusd = 1.18 let gbpusd = 1.38

EDITAR: Gracias, @AlexeyZelenin

 function getPrice(accessory) { accessory.unit === 'm' ? unitMultiplier = length / 1000 : unitMultiplier = 1 return ( accessory.currency === 'eur' ? (accessory.price * eurusd) : (accessory.currency === 'gbp' ? (accessory.price * gbpusd) : accessory.price) ).toFixed(2) }
 function getAcc(property) { return property.accessories .map(x => x.qty * getPrice(accessories.find(p => p.name === x.name)) * unitMultiplier) .reduce((c, p) => c + p) }

DOGUILLO:

 each i in products ..... each j in i.properties ..... length = j.length .....
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

 // Accessories: each accessory might be presented several times with different currencies var accessories = [ { name: 'Accessory-1', currency: 'eur', price: 3, unit: 'm', }, { name: 'Accessory-2', currency: 'eur', price: 5, unit: 'm', }, { name: 'Accessory-3', currency: 'usd', price: 2, unit: 'pcs', }, ] // Products - each product has properties with "accessories" inside var products = [ { name: 'Product', properties: [ { no: 'Product-1', length: '2000', accessories: [ { name: 'Accessory-1', qty: 2 }, { name: 'Accessory-2', qty: 2 }, { name: 'Accessory-3', qty: 1 }, ] }, ] } ]; //currencies let eurusd = 1.18; let gbpusd = 1.38; //functions function getPrice(product) { return ( product.currency === 'eur' ? (product.price * eurusd) : (product.currency === 'gbp' ? (product.price * gbpusd) : product.price)).toFixed(2); } // The function gets one product as an incoming parameter // Then gets the list of all accessories for all properties // Finds the accessory from the global array, calculates right price // based on accessory currency and multiplies it by accessory quantity // Then summarises all prices function getAccessories(product) { return product.properties .map(x => ({ accessories: x.accessories.map(b => ({ ...b, length: +x.length })) })) .flatMap(x => x.accessories) // get all accessories .map(x => x.length * x.qty * getPrice(accessories.find(p => p.name === x.name))) // find the price of accessory from global array .reduce((c, p) => c + p) // sum prices ; } console.log(getAccessories(products[0]));

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