首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于更改计算器的javascript中的循环帮助

用于更改计算器的javascript中的循环帮助
EN

Stack Overflow用户
提问于 2021-03-01 08:09:40
回答 2查看 84关注 0票数 1

我需要你的帮助来理解我在for循环中做错了什么。

我正在试着写一个函数,它接受账单的总金额和支付账单的现金总额。返回一个新对象,该对象描述收银员要返还的找零总额。省略我不应该退还的任何类型的零钱,例如,如果我不退还一张20美元的钞票,我就不会把它包括在结果中。

我确实得到了带有结果的对象,但并不是美元值之间的拆分所期望的方式。

我希望得到这样的结果:

代码语言:javascript
复制
{ tenDollar: 1, twoDollar: 1, oneDollar: 1, quarter: 3, penny: 2 }

但得到的却是这个:

代码语言:javascript
复制
{ tenDollar: 1, twoDollar: 0, oneDollar: 3, quarter: 0, dime: 7, penny: 7}

代码实现:

代码语言:javascript
复制
const calculateChange = function(total, cash) {
  // Your code here
  let arr = [];
  let change = cash - total;
  //console.log(change);
  //creates an aaray of split numbers 
    var i = 1;
    while (change > 0) {
      arr.unshift((change % 10) * i);
      change = Math.floor(change / 10);
      i *= 10
    }
  let changeType = {tenDollar: 0, twoDollar: 0, oneDollar: 0, quarter: 0, dime: 0, penny: 0};
    
    for(i = 0; i < arr.length; i++) {

      if (arr[i] % 1000 === 0) {
        changeType.tenDollar = arr[i] / 1000;
      } else if (arr[i] % 200 === 0 && arr[i] >=200 ) {
        changeType.twoDollar = arr[i] / 200;
      } else if (arr[i] % 100 === 0) {
        changeType.oneDollar = arr[i] / 100;
      } else if (arr[i] % 25 === 0) {
        changeType.quarter = arr[i] / 25;
      } else if (arr[i] % 10 === 0) {
        changeType.dime = arr[i] / 10;
      } else if (arr[i] % 1 === 0) {
        changeType.penny = arr[i] / 1;
      }
    }
  return changeType;
};
  console.log(calculateChange(2623, 4000));
EN

Stack Overflow用户

发布于 2021-03-01 08:43:25

我觉得你的方式不对,

这是解决类似问题的一种真正的方法。

代码语言:javascript
复制
(function () {
  var app = angular.module("calcApp", []);
  app.controller("calcController", function () {
    this.amountChange = function (amount, money) {
      //if(form.$invalid)
      //return alert("Please check form and enter correct values");

      var change = money - amount;

      var remaining = change * 100;

      var calcQuarter = Math.floor(remaining / 25);
      remaining = remaining % 25;

      var calcDime = Math.floor(remaining / 10);
      remaining = remaining % 10;

      var calcNickel = Math.floor(remaining / 5);
      remaining = remaining % 5;

      var calcPenny = Math.floor(remaining / 1);
      alert(
        "\nThe total was $" +
          amount +
          " with " +
          "$" +
          money +
          " tendered.\n\nPlease return $" +
          change.toFixed(2) +
          ":  " +
          calcQuarter +
          " quarters, " +
          calcDime +
          " dimes, " +
          calcNickel +
          " nickels, and " +
          calcPenny +
          " pennies, Thank you!"
      );
    };
  });
})();

可以找到完整的代码这里

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66415149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档