【问题标题】:Exact change - freecodecamp challenge确切的变化 - freecodecamp 挑战
【发布时间】:2018-09-24 14:59:32
【问题描述】:

我正在尝试解决 Freecodecamp 挑战:

设计一个收银机抽屉函数 checkCashRegister(),它接受购买价格作为第一个参数 (price),付款作为第二个参数 (cash),将现金抽屉 (cid) 作为第三个参数。

我几乎解决了它,问题是它没有减去,例如“二十”次它应该。

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;
  

}

【问题讨论】:

    标签: javascript loops while-loop


    【解决方案1】:
    while(cid[i][1] >= 0 && change >= den[i].value)
    

    也许我在您的代码中遗漏了某些内容,但 cid[i][1]den[i].value 的顺序不是相反吗?另外,cid[i][1] 不是必须至少与den[i].value 一样多或更多吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-22
      • 1970-01-01
      • 2011-04-30
      • 2013-12-21
      • 2015-09-28
      • 2014-12-21
      • 2018-01-21
      • 1970-01-01
      相关资源
      最近更新 更多