Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   1000=1к 120000=120к и тд (https://javascript.ru/forum/misc/74482-1000%3D1k-120000%3D120k-i-td.html)

Владислав Star 16.07.2018 10:20

1000=1к 120000=120к и тд
 
Здравствуйте, хочу в игре кликер, которая сделана на чистом js, сделать систему чисел с буквами, например 145800=145.8k, как это реализовать?
Зарание спасибо.

Nexus 16.07.2018 10:27

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

function func(val){
    if(val<1000)
    	return val;
	
	return (val/1000).toFixed(1)+'k';
}
alert(func(145800));

j0hnik 16.07.2018 11:35

var val = 145800;
alert( (val+'').replace(/(\d+)\d{3}/g, '$1'+'k') );

Dilettante_Pro 16.07.2018 12:33

j0hnik,
Если бы это были деньги, которые вы должны получить, то, мне кажется, у вас получилось бы 146k

Владислав Star 16.07.2018 15:31

Спасибо большое, но мне нужно и из милионами, трилионами и тд,

Alexandroppolus 16.07.2018 15:50

Цитата:

Сообщение от Владислав Star
из милионами, трилионами

а что там должно быть? kk, kkk, ...?

Владислав Star 16.07.2018 16:04

тысяча k
милион m
миллиард b
триллион t
ну и все

Nexus 16.07.2018 16:11

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));

рони 16.07.2018 16:33

Владислав 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));

Alexandroppolus 16.07.2018 18:07

Цитата:

Сообщение от рони
a.toFixed(1)

a.toFixed(1).replace(/\.0$/, '')


Часовой пояс GMT +3, время: 13:24.