Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在给定数量下使用的最小硬币数量_Javascript_Jquery - Fatal编程技术网

Javascript 在给定数量下使用的最小硬币数量

Javascript 在给定数量下使用的最小硬币数量,javascript,jquery,Javascript,Jquery,我试图在javascript/jquery中创建一个函数,计算出总输入量所需的最小硬币数 所以我有一个硬币的对象数组: var coins = [ { pennies: 200, print: '£2' }, { pennies: 100, print: '£1' }, { pennies: 50, print: '50p' }, {

我试图在javascript/jquery中创建一个函数,计算出总输入量所需的最小硬币数

所以我有一个硬币的对象数组:

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相关的问题。从最高等级的硬币开始,可以放入你的号码。减去输入数字所能容纳的最大次数。然后,用剩余的钱做同样的操作——找到能容纳的最大的硬币,再把最大的钱分包几次,一次又一次,直到你得到零。