Javascript 在给定数量下使用的最小硬币数量
我试图在javascript/jquery中创建一个函数,计算出总输入量所需的最小硬币数 所以我有一个硬币的对象数组:Javascript 在给定数量下使用的最小硬币数量,javascript,jquery,Javascript,Jquery,我试图在javascript/jquery中创建一个函数,计算出总输入量所需的最小硬币数 所以我有一个硬币的对象数组: var coins = [ { pennies: 200, print: '£2' }, { pennies: 100, print: '£1' }, { pennies: 50, print: '50p' }, {
var coins = [
{
pennies: 200,
print: '£2'
},
{
pennies: 100,
print: '£1'
},
{
pennies: 50,
print: '50p'
},
{
pennies: 20,
print: '20p'},
{
pennies: 10,
print: '10p'
},
{
pennies: 5,
print: '5p'},
{
pennies: 2,
print: '2p'
},
{
pennies: 1,
print: '1p'
}
];
var $input = $('input');
$input.keypress(function(e) {
if (e.which == 13) {
// do something
}
});
和我的HTML中的一个输入字段
因此,如果有人输入123p,我希望表单返回1x英镑、1x20P、1x2P和1x1P
我正努力想知道从哪里开始。如果有人能帮忙,我将不胜感激
谢谢听起来您只需要在
硬币
阵列上迭代,从最高面值开始:
const coins=[{pennies:200,print:2},{pennies:100,print:1},{pennies:50,print:50p},{pennies:20,print:20p},{pennies:10,print:10p},{pennies:5,print:5p},{pennies:2,print:2p},{pennies:1,print:1p}];
const getCoins=penniesToGo=>coins.reduce((coinCountStr,{pennies,print})=>{
const numCoins=数学楼层(便士/便士);
if(numCoins<1)返回coinCountStr;
便士多哥-=货币*便士;
const thisCoinStr=`numCoins}x${print}`;
返回coinCountStr?coinCountStr+','+thisCoinStr:thisCoinStr;
}, '');
控制台日志(getCoins(201));
控制台日志(getCoins(333));
控制台日志(getCoins(6))代码>这更多的是一个数学或算法问题,而不是与js相关的问题。从最高等级的硬币开始,可以放入你的号码。减去输入数字所能容纳的最大次数。然后,用剩余的钱做同样的操作——找到能容纳的最大的硬币,再把最大的钱分包几次,一次又一次,直到你得到零。