亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Javascript收銀機 - 為什么我不能記錄面額的總值

Javascript收銀機 - 為什么我不能記錄面額的總值

慕絲7291255 2022-07-15 09:58:46
function checkCashRegister(price, cash, cid) {var register = [["ONE HUNDRED", 100, cid[8][1]],["TWENTY", 20, cid[7][1]], ["TEN", 10, cid[6][1]], ["FIVE", 5,  cid[5][1]],["ONE", 1, cid[4][1]], ["QUARTER", 0.25, cid[3][1]], ["DIME", 0.10, cid[2][1]], ["NICKEL", 0.05, cid[1][1]],["PENNY", 0.01, cid[0][1]] ]var insuf = "INSUFFICIENT_FUNDS";var closed = "CLOSED";var open = "OPEN";var totalRegister = register.reduce((sum, i) => sum + i[2], 0).toFixed(2);var answer = {status: "INSUFFICIENT_FUNDS", change: []};var change = Math.abs(price - cash);var newArr = []var count = 0if (totalRegister == change) {answer.status = closed;answer.change = cid;} else if (totalRegister < change) {answer.status = insuf} else if (totalRegister > change) {for (var i of register) {  while (change >= i[1] && i[2] > 0) {    change = Math.round(change*100)/100;    change -= i[1];    i[2] -= i[1];    var subArr = []    subArr.push(i[0], i[1]);    }    if (subArr) {      newArr.push(subArr)    }   }  }  console.log(newArr)return answer}所以我上面的代碼幾乎把我帶到了我需要去的地方,并將下面的代碼記錄到控制臺;[ [ 'TWENTY', 20 ],  [ 'TEN', 10 ],  [ 'FIVE', 5 ],  [ 'ONE', 1 ],  [ 'QUARTER', 0.25 ],  [ 'DIME', 0.1 ],  [ 'DIME', 0.1 ],  [ 'PENNY', 0.01 ] ]以此為輸入;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]]));IT 會記錄我正在處理的貨幣的面額,但我需要計算我使用該面額的次數的總和。我需要的其余代碼字,如果我可以進行必要的更改,然后更改答案鍵,我將能夠解決。它還會兩次記錄一角錢的價值,我不知道為什么。誰能指出我正確的方向?
查看完整描述

1 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

原因是在subArr.push(i[0], i[1]);你用 推動貨幣的價值時i[1],你需要找到該貨幣面額是否已經存在,并增加它的計數。您可以為此目的使用地圖數據結構,如下所示:


function checkCashRegister(price, cash, cid) {

  var register = [

    ["ONE HUNDRED", 100, cid[8][1]],

    ["TWENTY", 20, cid[7][1]],

    ["TEN", 10, cid[6][1]],

    ["FIVE", 5, cid[5][1]],

    ["ONE", 1, cid[4][1]],

    ["QUARTER", 0.25, cid[3][1]],

    ["DIME", 0.1, cid[2][1]],

    ["NICKEL", 0.05, cid[1][1]],

    ["PENNY", 0.01, cid[0][1]],

  ];


  var insuf = "INSUFFICIENT_FUNDS";

  var closed = "CLOSED";

  var open = "OPEN";

  var totalRegister = register.reduce((sum, i) => sum + i[2], 0).toFixed(2);

  var answer = {

    status: "INSUFFICIENT_FUNDS",

    change: []

  };

  var change = Math.abs(price - cash);

  var newArr = [];

  var map = new Map();

  var count = 0;


  if (totalRegister == change) {

    answer.status = closed;

    answer.change = cid;

  } else if (totalRegister < change) {

    answer.status = insuf;

  } else if (totalRegister > change) {

    for (var i of register) {

      while (change >= i[1] && i[2] > 0) {

        change = Math.round(change * 100) / 100;

        change -= i[1];

        i[2] -= i[1];

        if (map.get(i[0])) {

          map.set(i[0], map.get(i[0]) + 1);

        } else {

          map.set(i[0], 1)

        }

      }

    }

  }

  newArr = [...map]

  console.log(newArr);

  return answer;

}


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],

  ])

);


查看完整回答
反對 回復 2022-07-15
  • 1 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號