Hace poco me encontré con un acertijo que pedía tomar una cantidad de cambio y devolver el equivalente en dólares y monedas.
Esta es la solución de cinco minutos que se me ocurrió por primera vez.
function makeChange (money) { var i, num, output = [], coins = [ [100, "dollar", "dollars" ], [25, "quarter", "quarters"], [10, "dime", "dimes" ], [5, "nickel", "nickels" ], [1, "penny", "pennies" ] ]; money = money * 100; // avoid float precision issues for (i = 0; i < coins.length; i++) { num = Math.floor(money / coins[i][0]); money -= num * coins[i][0]; if (num) { output.push(num + " " + coins[i][num > 1 ? 2 : 1]); } } return output.join(", "); } makeChange(0.37); // "1 quarter, 1 dime, 2 pennies"
Sin embargo, siento que me estoy perdiendo algo. ¿Cómo mejoraría este código para hacerlo más breve, más rápido o mejor?