文章目录
- cid 是一个二维数组,存着当前可用的找零. 当收银机中的钱不够找零时返回字符串 “Insufficient Funds”. 如果正好则返回字符串 “Closed”. 否则, 返回应找回的零钱列表,且由大到小存在二维数组中.
- <script type=”text/javascript”> function checkCashRegister(price, cash, cid) { var change; var payback = { ‘PENNY’: 1, ‘NICKEL’: 5, ‘DIME’: 10, ‘QUARTER’: 25, ‘ONE’: 100, ‘FIVE’: 500, ‘TEN’: 1000, ‘TWENTY’: 2000, ‘ONE HUNDRED’: 10000 }; //找零 change = (cash – price) * 100; console.log(‘需要找零:’ + change); var keys = Object.keys(payback); var i = keys.length – 1; var cidObj = {}; var objCopy = {}; for (i in cid) { cidObj[cid[i][0]] = cid[i][1] * 100; //复制一份,不能直接使用赋值语句 objCopy[cid[i][0]] = cid[i][1] * 100; } console.log(cidObj); //遍历收银机中的零钱和最小零钱单位 while (i >= 0) { while (payback[keys[i]] <= change && cidObj[keys[i]]) { change -= payback[keys[i]]; //如果要找零的钱大于最小找零单位且其中有钱,从其中找零 cidObj[keys[i]] -= payback[keys[i]]; //找零后从零钱盒中减去已找零费用 } i–; } console.log(cidObj); var result = []; //如果遍历之后change不为0,说明零钱不够找不开 if (change) { return “Insufficient Funds”; } for (i in cidObj) { if (cidObj[i]) { break; } else if (i === keys[keys.length – 1]) { return “Closed”; } } for (i in objCopy) { if (objCopy[i] !== cidObj[i]) { result.unshift([i, (objCopy[i] – cidObj[i]) / 100]); } } return result; } </script> 参考资料: https://www.jianshu.com/p/6b76d60d8f49
cid 是一个二维数组,存着当前可用的找零.
当收银机中的钱不够找零时返回字符串 “Insufficient Funds”. 如果正好则返回字符串 “Closed”.
否则, 返回应找回的零钱列表,且由大到小存在二维数组中.
<script type="text/javascript">
function checkCashRegister(price, cash, cid) {
var change;
var payback = {
'PENNY': 1,
'NICKEL': 5,
'DIME': 10,
'QUARTER': 25,
'ONE': 100,
'FIVE': 500,
'TEN': 1000,
'TWENTY': 2000,
'ONE HUNDRED': 10000
};
//找零
change = (cash - price) * 100;
console.log('需要找零:' + change);
var keys = Object.keys(payback);
var i = keys.length - 1;
var cidObj = {};
var objCopy = {};
for (i in cid) {
cidObj[cid[i][0]] = cid[i][1] * 100;
//复制一份,不能直接使用赋值语句
objCopy[cid[i][0]] = cid[i][1] * 100;
}
console.log(cidObj);
//遍历收银机中的零钱和最小零钱单位
while (i >= 0) {
while (payback[keys[i]] <= change && cidObj[keys[i]]) {
change -= payback[keys[i]]; //如果要找零的钱大于最小找零单位且其中有钱,从其中找零
cidObj[keys[i]] -= payback[keys[i]]; //找零后从零钱盒中减去已找零费用
}
i--;
}
console.log(cidObj);
var result = [];
//如果遍历之后change不为0,说明零钱不够找不开
if (change) {
return "Insufficient Funds";
}
for (i in cidObj) {
if (cidObj[i]) {
break;
} else if (i === keys[keys.length - 1]) {
return "Closed";
}
}
for (i in objCopy) {
if (objCopy[i] !== cidObj[i]) {
result.unshift([i, (objCopy[i] - cidObj[i]) / 100]);
}
}
return result;
}
</script>
<script type="text/javascript">
function checkCashRegister(price, cash, cid) {
var change;
var payback = {
'PENNY': 1,
'NICKEL': 5,
'DIME': 10,
'QUARTER': 25,
'ONE': 100,
'FIVE': 500,
'TEN': 1000,
'TWENTY': 2000,
'ONE HUNDRED': 10000
};
//找零
change = (cash - price) * 100;
console.log('需要找零:' + change);
var keys = Object.keys(payback);
var i = keys.length - 1;
var cidObj = {};
var objCopy = {};
for (i in cid) {
cidObj[cid[i][0]] = cid[i][1] * 100;
//复制一份,不能直接使用赋值语句
objCopy[cid[i][0]] = cid[i][1] * 100;
}
console.log(cidObj);
//遍历收银机中的零钱和最小零钱单位
while (i >= 0) {
while (payback[keys[i]] <= change && cidObj[keys[i]]) {
change -= payback[keys[i]]; //如果要找零的钱大于最小找零单位且其中有钱,从其中找零
cidObj[keys[i]] -= payback[keys[i]]; //找零后从零钱盒中减去已找零费用
}
i--;
}
console.log(cidObj);
var result = [];
//如果遍历之后change不为0,说明零钱不够找不开
if (change) {
return "Insufficient Funds";
}
for (i in cidObj) {
if (cidObj[i]) {
break;
} else if (i === keys[keys.length - 1]) {
return "Closed";
}
}
for (i in objCopy) {
if (objCopy[i] !== cidObj[i]) {
result.unshift([i, (objCopy[i] - cidObj[i]) / 100]);
}
}
return result;
}
</script>
参考资料:
https://www.jianshu.com/p/6b76d60d8f49
发表回复