lexapashkov
@lexapashkov

Как разбить число на разряды во vue?

Знаю несколько способов разбить число на разряды, например:

(/(\d)(?=(\d{3})+([^\d]|$))/g, "$1 ");

Как во VUE применить данный способ к

data () {
      return {
        value1:[100000,5000000]
     }
}
  • Вопрос задан
  • 2396 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Можно сделать фильтр, метод или вычисляемое свойство:

data: () => ({
  values: [ 0, 14235534, 53423, -9678953, 3451, 5323467445, -123456 ],
}),
filters: {
  format1: val => `${val}`.replace(/\d(?=(\d{3})+$)/g, '$& '),
},
methods: {
  format2: val => val.toLocaleString('ru-RU'),
},
computed: {
  formatted() {
    return this.values.map(n => {
      const sign = Math.sign(n) === -1;
      const arr = [...String(Math.abs(n))].reverse();
      return (sign ? '-' : '') + Array.from(
        { length: Math.ceil(arr.length / 3) },
        (n, i) => arr.slice(i * 3, (i + 1) * 3).reverse().join('')
      ).reverse().join(' ');
    });
  },
},

<div>
  <div v-for="n in values">{{ n | format1 }}</div>
</div>
<div>
  <div v-for="n in values">{{ format2(n) }}</div>
</div>
<pre>{{ formatted }}</pre>

https://jsfiddle.net/3qg792sr/
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Number.toLocaleString()

Пример:
var number = 123456.789;

// В Германии в качестве разделителя целой и дробной части используется запятая, а в качестве разделителя разрядов - точка
console.log(number.toLocaleString('de-DE'));
// → 123.456,789

// В России в качестве разделителя целой и дробной части используется запятая, а в качестве разделителя разрядов - пробел
console.log(number.toLocaleString('ru-RU'));
// → 123 456,789

// В большинстве арабоговорящих стран используют настоящие арабские цифры
console.log(number.toLocaleString('ar-EG'));
// → ١٢٣٤٥٦٫٧٨٩
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы