Как разбить число на массив кратный 3 (трем)?

Пытаюсь вывести но первый элемент выводится не кратный трем, как поправить регулярное выражение чтобы выводилось [123, 456, 789, 000]
s="1234567890";
result= s.split( /(?=(?:\d{3})+(?!\d))/ ); // [1, 234, 567, 890]
  • Вопрос задан
  • 345 просмотров
Пригласить эксперта
Ответы на вопрос 2
@GreatRash
function splitNum(x, delimiter, asString) {
    if (!delimiter || typeof delimiter !== 'string') {
        delimiter = ',';
    }

    var parts = x.toString().split("."); // в случае десятичной запятой
    parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, delimiter);
    
    if (Boolean(asString)) {
        return parts.join(".");
    } else {
        parts[0] = parts[0].split(delimiter);
        return parts;
    }
}

splitNum(1237465859); // [[1, 237, 465, 859]]
splitNum(1237465859.32); // [[1, 237, 465, 859], "32"]
splitNum(1237465859, null, 1); // "1,237,465,859"
splitNum(1237465859.32, ' ', true); // "1 237 465 859.32"


Или тупо:
var x = 1237465859.32
x.toLocaleString(); // "1 237 465 859,32"
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
var s = "1203456789";

var r = s.split('').reduce( function(p,c,i){
  if(i%3===0) p.push('');
  p[p.length-1] += '' + c;
  return p;
}, []);

r[r.length-1] = ('' + r[r.length-1] + '000').substr(0,3); // добить «0» в конце
// r[r.length-1] = ('000' + r[r.length-1]).substr(-3); // добить «0» в начале


добивая в начале: [120,345,678,009]
в конце: [120,345,678,900]
Ответ написан
Ваш ответ на вопрос

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

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