【发布时间】:2021-03-01 00:09:39
【问题描述】:
我需要你的帮助来了解我在 for 循环中做错了什么。
我正在尝试编写一个函数来接收账单的总金额和支付账单的总现金。返回一个新对象,该对象描述收银员返还的总零钱。省略我不应该退还的任何类型的更改,即如果我不退还 20 美元的钞票,我不会将其包含在结果中。
我确实得到了带有结果的对象,但不是预期的美元值之间的分割方式。
我希望得到这个结果:
{ tenDollar: 1, twoDollar: 1, oneDollar: 1, quarter: 3, penny: 2 }
但是得到这个:
{ tenDollar: 1, twoDollar: 0, oneDollar: 3, quarter: 0, dime: 7, penny: 7}
代码实现:
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));
【问题讨论】:
标签: javascript arrays for-loop object