确切的变化 - freecodecamp挑战

时间:2018-04-14 11:07:03

标签: javascript loops while-loop

我试图解决Freecodecamp挑战:

  

设计一个收银抽屉功能checkCashRegister(),它接受购买价格作为第一个参数(价格),付款作为第二个参数(现金),以及现金抽屉(cid)作为第三个参数。

我几乎解决了它,问题是它没有减少,例如" Twenty"应尽可能多的次数。

checkCashRegister(3.26, 100.00, [["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.10], ["QUARTER", 4.25], ["ONE", 90.00], ["FIVE", 55.00], ["TEN", 20.00], ["TWENTY", 60.00], ["ONE HUNDRED", 100.00]]) should return [["TWENTY", 60.00], ["TEN", 20.00], ["FIVE", 15.00], ["ONE", 1.00], ["QUARTER", 0.50], ["DIME", 0.20], ["PENNY", 0.04]].

它应该减去20美元三倍或60美元,它只减去一次。

它返回:

   [["TWENTY", 20.00], ["TEN", 10.00], ["FIVE", 5.00], ["ONE", 61.00], ["QUARTER", 0.50], ["DIME", 0.20], ["PENNY", 0.04]]

60美元被添加到" ONE" ..



function checkCashRegister(price, cash, cid) {
  var change = cash - price;
  var changeArray = [];
  var val = 0;
  var n = [
    {name:"PENNY",value:0.01},
    {name:"NICKEL",value:0.05},
    {name:"DIME",value:0.10},
    {name:"QUARTER",value:0.25},
    {name:"ONE",value:1.00},
    {name:"FIVE",value:5.00},
    {name:"TEN",value:10.00},
    {name:"TWENTY",value:20.00},
    {name:"ONE HUNDRED",value:100.00}
  ];
  var den = n.reverse();
  
  
  var register = cid.reduce(function(accumulator, next) {
    return accumulator+next[1];
  }, 0);
    
  if(register === change) {
    return "Closed";
  }else if(register < change) {
    return "Insufficient Funds";
  }
  else {
    
  }
  for(var i=0;i<cid.length;i++) {
    val=0;
    while(cid[i][1] >= 0 && change >= den[i].value) {
      change -= den[i].value;
      change = Math.round(change * 100) / 100;
      cid[i][1] -= den[i].value;
      val += den[i].value;
    
    }
     if(val !== 0) {
       
      changeArray.push([den[i].name, Number(val.toFixed(2))]);
    }
  }
  
  
  if(changeArray.length < 1 || change > 0) {
    return "Insufficient Funds";
  }
  
  return changeArray;
  

}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

while(cid[i][1] >= 0 && change >= den[i].value)

也许我错过了您的代码中的某些内容,但是cid[i][1]den[i].value的顺序不是相反吗?另外,cid[i][1]是否必须至少等于或等于den[i].value