Estoy tratando de configurar mi lista de precios. La unidad de precio debe disminuir dependiendo de la cantidad que compre, pero debe seguir creciendo.
Pude hacerlo en excel, pero ahora me gustaría hacer una función en javascript.
mi lista de precios en la base de datos es así:
min max price 1 9 50 10 19 45 20 29 40 30 49 35 50 79 30 80 90 25La función dependiendo del precio es
qty price function 1-9 qty*50 10-19 (qty-9)*45+(9*50) 20-29 (qty-19)*40+(19*45) ... 80-90 (qty-79)*25+(79*30)Me gustaría crear una función ES6 que reciba la cantidad en el parámetro y devuelva el precio total.
ACTUALIZAR Pude crear la función, pero estoy bastante seguro de que podemos mejorarla.
let priceList= [ {"_id":1,"min":1,"max":9,"price":50}, {"_id":2,"min":10,"max":19,"price":45}, {"_id":3,"min":20,"max":29,"price":40}, {"_id":4,"min":30,"max":49,"price":35}, {"_id":5,"min":50,"max":79,"price":30}, {"_id":6,"min":80,"max":90,"price":25} ] function sum(qty){ let sum = 0; let prices = priceList.filter((x)=>x.min<=qty); var price; var priceArr=[]; const pricesLength = prices.length; for (let i = 0; i < pricesLength ; i++) { price = prices[i]; if(i==0){ priceArr.push(price.price * ((price.max < qty) ? price.max : qty)); } else { priceArr.push(price.price * ((price.max <= qty) ? price.max - price.min + 1 : qty - price.min + 1) + priceArr[i-1]); } } return priceArr[pricesLength-1]; }