number-abbreviate
Version:
Abbreviate a number and add unit letters e.g. 2200000 => '2.2m'
57 lines (43 loc) • 1.43 kB
JavaScript
(function(root){
'use strict';
function NumberAbbreviate() {
var units
if (!(this instanceof NumberAbbreviate)) {
// function usage: abbrev(n, decPlaces, units)
var n = arguments[0]
var decPlaces = arguments[1]
units = arguments[2]
var ab = new NumberAbbreviate(units)
return ab.abbreviate(n, decPlaces)
}
// class usage: new NumberAbbreviate(units)
units = arguments[0]
this.units = units == null ? ['k', 'm', 'b', 't'] : units
}
NumberAbbreviate.prototype._abbreviate = function(number, decPlaces) {
decPlaces = Math.pow(10, decPlaces)
for (var i = this.units.length - 1; i >= 0; i--) {
var size = Math.pow(10, (i + 1) * 3)
if (size <= number) {
number = Math.round(number * decPlaces / size) / decPlaces
if ((number === 1000) && (i < this.units.length - 1)) {
number = 1
i++
}
number += this.units[i]
break
}
}
return number
}
NumberAbbreviate.prototype.abbreviate = function(number, decPlaces) {
var isNegative = number < 0
var abbreviatedNumber = this._abbreviate(Math.abs(number), decPlaces || 0)
return isNegative ? '-' + abbreviatedNumber : abbreviatedNumber;
}
if (typeof module !== 'undefined' && module.exports) {
module.exports = NumberAbbreviate
} else {
root.NumberAbbreviate = NumberAbbreviate
}
})(this);