Фильтры для vue.js #vue #filter
/**
* Разделитель тысяч в ценах
*
* @param {number|string} value - Значение
* @returns строка с разделением на тысячные доли | пример: '7 550 000'
*/
thousandSeparator(value) {
return value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ' ')
}
describe('thousandSeparator', () => {
it('1000 -> 1 000', () => {
expect(PostLimiter.methods.thousandSeparator(1000)).toBe('1 000');
});
it("'123456789' -> 123 456 789", () => {
expect(PostLimiter.methods.thousandSeparator('123456789')).toBe(
'123 456 789'
);
});
it('350 -> 350', () => {
expect(PostLimiter.methods.thousandSeparator(350)).toBe('350');
});
it('Hello -> Hello', () => {
expect(PostLimiter.methods.thousandSeparator('Hello')).toBe('');
});
it('Try66666ololo1 -> 666 661', () => {
expect(PostLimiter.methods.thousandSeparator('Try66666ololo1')).toBe(
'666 661'
);
});
});
/**
* Обрезка текста
* @param {String} value - входная строка текста
* @param {Number} symbolsCount - кол-во символов которое нужно оставить
*/
cutText(value, symbolsCount) {
return value.length > symbolsCount
? value.slice(0, symbolsCount - 3) + '...'
: value;
}
/**
* Cлучайный элемент массива
*
* @param {Array} value входной массив | пример: ['a','b','c']
* @returns случайный элемент массива | пример: 'b'
*/
random(value) {
return value[
Math.floor(Math.random() * value.length)
];
}
// получение инициалов
getInitials(value) {
return value
.split(' ')
.map(name => {
return name.charAt(0);
})
.join('');
}