купите x получите бесплатную формулу y

#javascript #math #formula

Вопрос:

Пытаюсь выяснить, как купить x и получить y бесплатно. Например, купите 10, получите 1 бесплатно, купите 20, получите 2 бесплатно и так далее. Пока я просто использую такую формулу, как эта. Эта формула не будет работать при изменении на пример: Купите 5, получите 1 бесплатно, купите 10, получите 2 бесплатно..

Тс

 getFreeItem(){    let countTotal;   this.commonService.getOrderList$.subscribe((x) =gt; {  x.filter(item =gt; {    item.forEach((element, i) =gt; {    if (element.freeDealMin !== null) {  item?.reduce((a, b) =gt; {  let aVal = a?.count ? a?.count : a;  let bVal = b?.count ? b?.count : b;    countTotal = aVal   bVal;    return aVal   bVal;  }, 0);   let statusFree = element.freeDealMin/ countTotal;    if (statusFree == 1) {    this.freeDealQty = 1;    }else if (statusFree == 0.5) {    this.freeDealQty = 2;   }else if (statusFree == 0.33333333333) {    this.freeDealQty = 3;   }  }  });  });  });    }   

Комментарии:

1. Всегда ли увеличение происходит в одинаковой пропорции?

2. @EvanTrimboli да.. увеличение всегда в одинаковой пропорции

3. const amountFree = Math.floor(totalItems / freeThreshold)

4. @EvanTrimboli Благодарит, что это сработало.. Можете ли вы добавить в ответ, чтобы я мог это принять

Ответ №1:

Простая формула:

 function getFreeItem(purchaseCount,buyCount=10,freeCount=1) { // default paramters (10 items for 1 free)  let rate = Math.floor(purchaseCount / buyCount);  return rate * freeCount;  }    console.log('Buy 10, Get 1');  console.log('5', getFreeItem(5));  console.log('10',getFreeItem(10));  console.log('15',getFreeItem(15));  console.log('20',getFreeItem(20));  console.log();    console.log('Buy 5, Get 1');  console.log('5', getFreeItem(5,5));  console.log('10',getFreeItem(10,5));  console.log('15',getFreeItem(15,5));  console.log('20',getFreeItem(20,5));  console.log();    console.log('Buy 10, Get 2');  console.log('5', getFreeItem(5, 10,2));  console.log('10',getFreeItem(10,10,2));  console.log('15',getFreeItem(15,10,2));  console.log('20',getFreeItem(20,10,2));  console.log();    console.log('BOGO: Buy 1, Get 1');  console.log('5', getFreeItem(5, 1));  console.log('10',getFreeItem(10,1));  console.log('15',getFreeItem(15,1));  console.log('20',getFreeItem(20,1));  console.log();  

Измените параметры в соответствии с вашим курсом BOGO