Как я могу добавить разделитель тысяч в эти строки кода?

#javascript #html #math #separator

#javascript #HTML #математика #разделитель

Вопрос:

Я искал это в Google, но нашел сложные решения, поэтому я пришел сюда, чтобы спросить, как я могу это сделать. Я делаю инкрементную игру и хочу начать с основ: добыча золота и покупка. Теперь я перехожу к следующему шагу в разработке этой игры, и мне действительно нужна помощь

HTML

 <!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
    <meta charset="utf-8">
    <title>Gold Miner</title>
</head>
<body>
    <h2 id="goldMined">0 Gold Mined</h2>
    <br />
    <br />
    <button onclick="buyGoldPerClick()" id="perClickUpgrade">Get More Money. Cost: 10 Gold</button>
    <br />
    <br />
    <button onclick="Reset()">Reset Game</button>
    <script src="main.js" charset="utf-8" type="text/javascript"></script>
</body>
</html>
  

JavaScript

 var gameData = {
    gold: 0,
    goldPerClick: 0.01,
    goldPerClickCost: 10,
    tickReduction: 1000,
    tickReductionCost: 100
}

function mineGold() {
    gameData.gold  = gameData.goldPerClick
    document.getElementById("goldMined").innerHTML = gameData.gold.toFixed(0).toLocaleString('en')   " Gold Mined"
    document.getElementById("perClickUpgrade").innerHTML = "Buy Pickaxe. Cost: "   gameData.goldPerClickCost.toFixed(0).toLocaleString('en')   " Gold"
}

function buyGoldPerClick() {
    if (gameData.gold >= gameData.goldPerClickCost) {
        gameData.gold -= gameData.goldPerClickCost
        gameData.goldPerClick *= 2
        gameData.goldPerClickCost *= 3
        document.getElementById("goldMined").innerHTML = gameData.gold.toLocaleString('en')   " Gold Mined"
        document.getElementById("perClickUpgrade").innerHTML = "Buy Pickaxe. Cost: "   gameData.goldPerClickCost.toLocaleString('en')   " Gold"
    }
}

function Reset() {
    gameData.gold = 0
    gameData.goldPerClick = 0.01
    gameData.goldPerClickCost = 10
}

var mainGameLoop = window.setInterval(function () {
    mineGold()
}, 10)

var saveGameLoop = window.setInterval(function () {
    localStorage.setItem("goldMinerSave", JSON.stringify(gameData))
}, 1)

var savegame = JSON.parse(localStorage.getItem("goldMinerSave"))
if (savegame !== null) {
    gameData = savegame
}
  

Любая помощь мне очень помогает, так как я новичок в программировании на JavaScript и HTML! Спасибо, что прочитали мой пост!

Комментарии:

1. В чем ваш вопрос? Вы не задаете ни одного

2. Как я могу добавить разделитель тысяч в эти числа?

3. В каких числах? Пожалуйста, постарайтесь быть конкретным и сузить проблему.

4. Я пытаюсь получить разделитель тысяч в количестве золота и цене.

Ответ №1:

Вы можете использовать функцию NumberFormat() из Intl API, доступного в Javascript. (нажмите на ссылку для получения документации).

  1. Первым параметром функции Intl.NumberFormat() является язык, если вы хотите, чтобы он был универсальным, просто передайте ‘en-US’. Но если вы также можете передать в navigator.язык, если вы хотите просто взять язык из браузера.

  2. Вторым параметром этой функции является объект options . Теперь, в этом объекте options, я передал maximumSignificantDigits и установил для него значение 3. Вы можете изменить это в соответствии с вашими требованиями. У вас также есть другие варианты, которые вы можете передать, просто проверьте ссылку, которую я предоставил выше.

  3. Наконец, вы будете вызывать функцию format() и передавать свой gold в качестве параметра, и это в целом вернет вам форматированное значение с 3 максимальными значащими цифрами.

 const gold = 1000000;

const formattedGold = Intl.NumberFormat('en-US', { maximumSignificantDigits: 3 }).format(gold);

//Printing output to console
console.log(formattedGold);