Data Manipulation
Format numbers as money
Section titled “Format numbers as money”Fast and short way to format value of type Number as money, e.g. 1234567.89 => "1,234,567.89":
var num = 1234567.89, formatted;
formatted = num.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,'); // "1,234,567.89"More advanced variant with support of any number of decimals [0 .. n], variable size of number groups [0 .. x] and different delimiter types:
/** * Number.prototype.format(n, x, s, c) * * @param integer n: length of decimal * @param integer x: length of whole part * @param mixed s: sections delimiter * @param mixed c: decimal delimiter */Number.prototype.format = function(n, x, s, c) { var re = '\\d(?=(\\d{' + (x || 3) + '})+' + (n > 0 ? '\\D' : '$') + ')', num = this.toFixed(Math.max(0, ~~n));
return (c ? num.replace('.', c) : num).replace(new RegExp(re, 'g'), '$&' + (s || ','));};
12345678.9.format(2, 3, '.', ','); // "12.345.678,90"123456.789.format(4, 4, ' ', ':'); // "12 3456:7890"12345678.9.format(0, 3, '-'); // "12-345-679"123456789..format(2); // "123,456,789.00"Extract extension from file name
Section titled “Extract extension from file name”Fast and short way to extract extension from file name in JavaScript will be:
function get_extension(filename) { return filename.slice((filename.lastIndexOf('.') - 1 >>> 0) + 2);}It works correctly both with names having no extension (e.g. myfile) or starting with . dot (e.g. .htaccess):
get_extension('') // ""get_extension('name') // ""get_extension('name.txt') // "txt"get_extension('.htpasswd') // ""get_extension('name.with.many.dots.myext') // "myext"The following solution may extract file extensions from full path:
function get_extension(path) { var basename = path.split(/[\\/]/).pop(), // extract file name from full path ... // (supports `\\` and `/` separators) pos = basename.lastIndexOf('.'); // get last position of `.`
if (basename === '' || pos < 1) // if file name is empty or ... return ""; // `.` not found (-1) or comes first (0)
return basename.slice(pos + 1); // extract extension ignoring `.`}
get_extension('/path/to/file.ext'); // "ext"Set object property given its string name
Section titled “Set object property given its string name”function assign(obj, prop, value) { if (typeof prop === 'string') prop = prop.split('.');
if (prop.length > 1) { var e = prop.shift(); assign(obj[e] = Object.prototype.toString.call(obj[e]) === '[object Object]' ? obj[e] : {}, prop, value); } else obj[prop[0]] = value;}
var obj = {}, propName = 'foo.bar.foobar';
assign(obj, propName, 'Value');
// obj == {// foo : {// bar : {// foobar : 'Value'// }// }// }