@newhacke

Как вставить пробел после каждого 3 символа с конца, при вводе в инпут?

Вообще не понимаю как это работает, времени нет разбираться, нужно срочно внести изменения. Может кто поможет.... Надо при вводе в инпут отделять с конца каждые 3 символы пробелом.
Видел много подобных примеров, но не до конца понимаю как это работает, и у меня получается ерунда. Заранее спасибо....
1 000
10 000
100 000
1 000 000

И т.д.
  • Вопрос задан
  • 4024 просмотра
Решения вопроса 3
function format(str) {
    const s = str.length;
    const chars = str.split('');
    const strWithSpaces = chars.reduceRight((acc, char, i) => {
        const spaceOrNothing = ((((s - i) % 3) === 0) ? ' ' : '');
        return (spaceOrNothing + char + acc);
    }, '');

    return ((strWithSpaces[0] === ' ') ? strWithSpaces.slice(1) : strWithSpaces);
}
Ответ написан
@V0vash

(1000000).toLocaleString('ru')

В России в качестве разделителя целой и дробной части используется запятая, а в качестве разделителя разрядов - пробел
Ответ написан
@H0JLuk
Вариант через Intl вот:
const format = num => new Intl.NumberFormat('ru-RU').format(num);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Huntgold
Изучаю JS часов 5-6, только начал. Вижу тут уже помогли, но не зря же я минут 15-20 писал этот код. Изначальная задумка была засунуть число в массив, сделать reverse и накидать через цикл каждые 3 подхода пробел и потом реверс обратно и вывести через сплит, но я не помню как засунуть это дело в массив, по этому создал массив в ручную

let p = "1493205923492305";
let i = 0, res = "", b = 3, c = 3, t = p.length, d = 0, sec = "";
t--
while (i<p.length)
{
  i == b ? res = res + " " : i == i
  i == b ? b = b + 3 : i == i
res = res + String(p[t])
  t--
  i++
}
let pp = res.length - 1
while (d<res.length)
{
sec = sec + String(res[pp])
pp--
  d++
}

console.log(sec)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы