FCC(ES6写法) Exact Change
Posted blackchaos
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FCC(ES6写法) Exact Change相关的知识,希望对你有一定的参考价值。
- 设计一个收银程序 `checkCashRegister()`,其把购买价格`(price)`作为第一个参数 , 付款金额 `(cash)`作为第二个参数, 和收银机中零钱 `(cid) `作为第三个参数。
- ` cid` 是一个二维数组,存着当前可用的找零。
- 当收银机中的钱不够找零时返回字符串 `"Insufficient Funds"`。 如果正好则返回字符串 `"Closed"`。
- 否则, 返回应找回的零钱列表,且由大到小存在二维数组中。
思路:1.change表示要找的钱,arr里放剩下的零钱数组,total表示零钱总价值,money表示总共要找的钱的总价值。
function checkCashRegister(price, cash, cid) { let change = cash - price; let arr = [],j = 0,total = 0 ,money = change; const array = [0.01,0.05,0.1,0.25,1,5,10,20,100]; for(let i = cid.length - 1;i >= 0;i--){ total += cid[i][1]; if(change > array[i] && cid[i][1] > 0){ let c = parseInt(change / array[i]); if(c * array[i] > cid[i][1]){ change -= cid[i][1]; }else{ change -= c * array[i]; cid[i][1] = c * array[i]; } change = change.toFixed(2); arr[j] = cid[i]; j++; } } if(total === money){ return "Closed"; }else if(total < money || change != 0){ return "Insufficient Funds"; } return arr; } console.log(checkCashRegister(19.50, 20.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]])); //[["QUARTER", 0.5]]
如果有不明白的地方请留言,如果有更好更简便更优化的方法请留言,谢谢。
更多内容请访问我的个人博客: Bblog
以上是关于FCC(ES6写法) Exact Change的主要内容,如果未能解决你的问题,请参考以下文章