JavaScript >> Javascript 文檔 >  >> JavaScript

代碼挑戰:更改分配器

我最近遇到了一個腦筋急轉彎,要求取一定數量的零錢並以美元和硬幣的形式退還等值的錢。

這是我最初想出的五分鐘解決方案。

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"

不過,我覺得我錯過了一些東西。 您將如何改進此代碼以使其更短、更快或更好?


Tutorial JavaScript 教程
  1. 使用自定義管道更改 Datepicker (Angular) 中顯示的日期格式

  2. Angular 5 材料設計全寬輸入

  3. JavaScript 中的 Import 和 Export 語句以及如何使用它們

  4. JavaScript 棘手的面試題

  5. 用於 i18n 和 React 本地化的 NextJS、React 應用程序和 React Native 應用程序的前 12 個庫

  6. 您應該使用的唯一 API 堆棧(和工作流程)。

  7. 在紗線審計後升級 Node.js 依賴項

  1. 使用 Webiny 和 NextJS 構建 CSS 技巧網站克隆

  2. 如何從地址欄創建 React、Vue 或 TS/JS 項目🤯

  3. 如何使用小寫鍵將 JSON 解析為對象

  4. 使用 Next.js 和 ESLint 設置 Google Maps API 時的 4 個陷阱

  5. React + Redux 中的 SoundCloud 客戶端

  6. 立即執行功能

  7. 在 Vue 組件之間傳遞數據,基礎

  1. 在 React 中使用上下文時修復重新渲染

  2. React中元素之間的同步高度

  3. JS中的單元測試簡介

  4. 無 Cookie 的未來:為第三方 Cookie 的終結做準備