Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.07.2018, 10:20
Интересующийся
Отправить личное сообщение для Владислав Star Посмотреть профиль Найти все сообщения от Владислав Star
 
Регистрация: 04.05.2018
Сообщений: 22

1000=1к 120000=120к и тд
Здравствуйте, хочу в игре кликер, которая сделана на чистом js, сделать систему чисел с буквами, например 145800=145.8k, как это реализовать?
Зарание спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 16.07.2018, 10:27
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

Проверить не меньше ли число, чем значение постфикса, разделить число на значение буквы, округлить по необходимости и добавить постфикс.

function func(val){
    if(val<1000)
    	return val;
	
	return (val/1000).toFixed(1)+'k';
}
alert(func(145800));
Ответить с цитированием
  #3 (permalink)  
Старый 16.07.2018, 11:35
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

var val = 145800;
alert( (val+'').replace(/(\d+)\d{3}/g, '$1'+'k') );
Ответить с цитированием
  #4 (permalink)  
Старый 16.07.2018, 12:33
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

j0hnik,
Если бы это были деньги, которые вы должны получить, то, мне кажется, у вас получилось бы 146k
Ответить с цитированием
  #5 (permalink)  
Старый 16.07.2018, 15:31
Интересующийся
Отправить личное сообщение для Владислав Star Посмотреть профиль Найти все сообщения от Владислав Star
 
Регистрация: 04.05.2018
Сообщений: 22

Спасибо большое, но мне нужно и из милионами, трилионами и тд,
Ответить с цитированием
  #6 (permalink)  
Старый 16.07.2018, 15:50
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Сообщение от Владислав Star
из милионами, трилионами
а что там должно быть? kk, kkk, ...?
Ответить с цитированием
  #7 (permalink)  
Старый 16.07.2018, 16:04
Интересующийся
Отправить личное сообщение для Владислав Star Посмотреть профиль Найти все сообщения от Владислав Star
 
Регистрация: 04.05.2018
Сообщений: 22

тысяча k
милион m
миллиард b
триллион t
ну и все
Ответить с цитированием
  #8 (permalink)  
Старый 16.07.2018, 16:11
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

var calc = (function() {
    const data = [{
            postfix: 'k',
            number: 1000
        },
        {
            postfix: 'kk',
            number: 1e6
        }
    ].sort(function(a, b) {
        return a.number - b.number;
    });


    return function(value) {
        const item = data.reduce(function(r, i) {
            if (value >= i.number)
                r = i;

            return r;
        }, false);


        return !item ? value : (value / item.number).toFixed(1) + item.postfix;
    };
})();

alert(calc(145));
alert(calc(145800));
alert(calc(6458300));
Ответить с цитированием
  #9 (permalink)  
Старый 16.07.2018, 16:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Владислав Star,
function fn(a) {
  var n = 0;
  while (a > 1000) {
    a /= 1000;
    n++;
  }
  return +a.toFixed(1) + (["", "k", "m", "b", "t"][n] || "");
}

alert(fn(145));
alert(fn(145800));
alert(fn(6458300));
Ответить с цитированием
  #10 (permalink)  
Старый 16.07.2018, 18:07
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Сообщение от рони
a.toFixed(1)
a.toFixed(1).replace(/\.0$/, '')
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск