Я хочу перебрать кассовый аппарат с существующей валютой, чтобы получить текущие изменения для клиента - PullRequest
0 голосов
/ 26 марта 2019

посмотрите на функцию f (); предполагается, что он выполняет итерацию по фильтру FilterCashFlow, в то время как changeToGive равен> = 0, а затем следует добавить приращение FilterCashFlow и минус «остаются & ChangeToGIve» .... ожидается, что значение будет выводить этот код ниже =>

checkCashRegister(3.26, 100, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 
3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], 
["TWENTY", 60], ["ONE HUNDRED", 100]]) 

должен вернуть

{status: "OPEN", 
change: [["TWENTY", 60], ["TEN", 20], ["FIVE", 15], ["ONE", 1], 
["QUARTER", 0.5], ["DIME", 0.2], ["PENNY", 0.04]]}.

где я могу изменить вывод результата выше ??? это моя программа ниже

function checkCashRegister(price, cash, cid) {
  var productPrice = price;
  var payment = cash;
  var currentCash = [...cid];
  var remain = payment - productPrice;
  var filterCashFlow = [];
  var ChangeToGive = [];

  var currency = [['PENNY', 0.01],
    ['NICKEL', 0.05],
    ['DIME', 0.1],
    ['QUARTER', 0.25],
    ['ONE', 1],
    ['FIVE', 5],
    ['TEN', 10],
    ['TWENTY', 20],
    ['HUNDRED', 100],
  ];
  // it will save current cash thats greater than the currency
  for (let i = 0; i < currency.length; i++) {
    if (remain > currency[i][1]) {
      filterCashFlow.push(currency[i]);
    }
  }
  filterCashFlow.reverse();
  for (let i = 0; i < currency.length; i++) {
    if (remain > currency[i][1]) {
      if (currentCash.indexOf(currency[i])) { ChangeToGive.push(currentCash[i]); }
    }
  }
  ChangeToGive.reverse();
  var TotalCash = ChangeToGive.reduce((x, y) => x + y[1], 0);

  var status = () => ((remain > TotalCash) ? 'INSUFFICIENT_FUNDS' :
    (remain == TotalCash) ? 'CLOSED' : (remain < TotalCash) ? 'OPEN' : false);


  var f = () => {
    let fin = 0;
    const x = [];
    for (let i = 0; i < filterCashFlow.length; i++) {
      while (ChangeToGive[i][1] > 0 && remain >= filterCashFlow[i][1]) {
        filterCashFlow[i][1] += filterCashFlow[i][1];
        fin += filterCashFlow[i][1];
        remain -= filterCashFlow[i][1];
        console.log(ChangeToGive[i][1]);
        ChangeToGive[i][1] -= filterCashFlow[i][1];

        remain = Math.round(remain * 100) / 100;
      }
      if (fin >= remain) {
        x.push(filterCashFlow[i]);
        return x;
      }
    }
  };
  function checker() {
    let check;
    if (status() == 'INSUFFICIENT_FUNDS') {
      return check = [];
    }
    if (status() == 'CLOSED') {
      return check = currentCash;
    }
    if (status() == 'OPEN') {
      return check = f();
    }
    return check;
  }


  /* Here is your change, ma'am. */
  return ({ status: status(), change: checker() });
}

console.log(checkCashRegister(3.26, 100, [['PENNY', 1.01], ['NICKEL',
  2.05], ['DIME', 3.1], ['QUARTER', 4.25], ['ONE', 90], ['FIVE', 55],
['TEN', 20], ['TWENTY', 60], ['ONE HUNDRED', 100]]));
'''
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...