tools-for-js
Version:
基于babel构建的JavaScript前端工具库
209 lines (201 loc) • 7.49 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.upperCaseKeys = exports.textTransform = exports.numToChinese = exports.moneyFormat = exports.lowercaseKeys = exports.convertSmallHump = void 0;
var chnNumChar = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
var chnUnitSection = ['', '万', '亿', '万亿', '亿亿'];
var chnUnitChar = ['', '十', '百', '千'];
// 如果数字含有小数部分,那么可以将小数部分单独取出,将小数部分的数字转换为字符串的方法
var numToChn = function numToChn(params) {
var index = params.toString().indexOf('.');
if (index != -1) {
var str = params.toString().slice(index);
var a = '点';
for (var i = 1; i < str.length; i++) {
a += chnNumChar[parseInt(str[i])];
}
return a;
} else {
return '';
}
};
// 定义在每个小节的内部进行转化的方法,其他部分则与小节内部转化方法相同
var sectionToChinese = function sectionToChinese(section) {
var str = '',
chnstr = '',
zero = false,
count = 0; //zero为是否进行补零, 第一次进行取余由于为个位数,默认不补零
while (section > 0) {
var v = section % 10; //对数字取余10,得到的数即为个位数
if (v == 0) {
//如果数字为零,则对字符串进行补零
if (zero) {
zero = false; //如果遇到连续多次取余都是0,那么只需补一个零即可
chnstr = chnNumChar[v] + chnstr;
}
} else {
zero = true; //第一次取余之后,如果再次取余为零,则需要补零
str = chnNumChar[v];
str += chnUnitChar[count];
chnstr = str + chnstr;
}
count++;
section = Math.floor(section / 10);
}
return chnstr;
};
/* 定义整个数字全部转换的方法,需要依次对数字进行10000为单位的取余,然后分成小节,按小节计算,当每个小节的数不足1000时,则需要进行补零 */
/*******
* @description: 阿拉伯数字转中文数字
* @author: 琴时
* @param {Number} params
* @return {*}
* @example transformToChinese(123456)
* 输出:一十二万三千四百五十六
*/
var numToChinese = exports.numToChinese = function numToChinese(params) {
var a = numToChn(params);
params = Math.floor(params);
var unitPos = 0;
var strIns = '',
chnStr = '';
var needZero = false;
if (params === 0) {
return chnNumChar[0];
}
while (params > 0) {
var section = params % 10000;
if (needZero) {
chnStr = chnNumChar[0] + chnStr;
}
strIns = sectionToChinese(section);
strIns += section !== 0 ? chnUnitSection[unitPos] : chnUnitSection[0];
chnStr = strIns + chnStr;
needZero = section < 1000 && section > 0;
params = Math.floor(params / 10000);
unitPos++;
}
return chnStr + a;
};
/*******
* @description: 金额格式化函数
* @author: 琴时
* @param {*} value [金额]
* @param {*} currency [货币符号]
* @param {*} decimals [小数位数]
* @return {String} [返回格式好的金额]
* @example: moneyFormat(123456.789, '¥', 2) => ¥123,456.79
*/
var moneyFormat = exports.moneyFormat = function moneyFormat(value, currency, decimals) {
var digitsRE = /(\d{3})(?=\d)/g; //匹配数字之前的3个数字
value = parseFloat(value); //转换成数值保留小数
// 如果传过来的值不是有限数值或者值不存在且值不等于0
if (!isFinite(value) || !value && value !== 0) return ''; //isFinite判断是否是有限数值
currency = currency ? currency : '$'; //如果有指定金币符号就直接用,否则使用美元符号
decimals = decimals ? decimals : 2; //如果有指定小数位就直接用,否则使用2位小数
var stringified = Math.abs(value).toFixed(decimals); //取数值的绝对值后decimals位小数
var _int = stringified.slice(0, -1 - decimals); //取整数部分
var remainder = _int.length % 3; //因为金额都是每3个划分,划分后取剩余的(整数部分取余)
var head = remainder > 0 ? _int.slice(0, remainder) + (_int.length > 3 ? ',' : '') : '';
// 计算划分后头部(整数部分超过三位头部加上逗号)
var _float = stringified.slice(-1 - decimals); //取小数部分加上小数点
var sign = value < 0 ? '-' : ''; //判断正负数
return sign + currency + head + _int.slice(remainder).replace(digitsRE, '$1,') +
//digitsRE, '$1,'==>每3位加1逗号
_float;
};
/*******
* @description: Txt 转数组对象
* 将txt文件内容转化成定制数组对象
* 将ZFB账号---运动账号---运动密码==>[{'antName','username','password','remark'}]
* 将运动账号---运动密码==>[{'username','password','remark'}]
* @author: 琴时
* @param {Object} params
* @return {*}
*/
var textTransform = exports.textTransform = function textTransform(params) {
var _params$content = params.content,
content = _params$content === void 0 ? '' : _params$content,
symbol = params.symbol,
_params$sign = params.sign,
sign = _params$sign === void 0 ? 'ants' : _params$sign,
password = params.password,
_params$remark = params.remark,
remark = _params$remark === void 0 ? '' : _params$remark,
_params$index = params.index,
index = _params$index === void 0 ? 0 : _params$index;
// 将每行字符进行切割成数组
var list = content.split(/[(\r\n)\r\n]+/); // 根据换行或者回车进行识别
var arrayTemp = [];
list.forEach(function (item) {
item = item.trim(); // 去除首尾空格
if (item) {
// 将每行数据通过[symbol]定制符合进行切割
var newList = item.split(symbol).map(function (ele) {
return ele.trim();
});
var tempData = {};
if (sign === 'ants') {
tempData = {
antName: newList[index],
username: index === 1 || newList.length === 1 ? newList[0] : newList[1],
password: password || newList[2],
remark: newList[3] || remark
};
} else {
tempData = {
username: newList[0],
password: password || newList[1],
remark: newList[2] || remark
};
}
arrayTemp.push(tempData);
}
});
return arrayTemp;
};
/*******
* @description: 变量名下划线转小驼峰
* @author: 琴时
* @param {String} key
* @return {String}
* @example: convertSmallHump('user_name') => userName
*/
var convertSmallHump = exports.convertSmallHump = function convertSmallHump(key) {
return key.toLowerCase().replace(/_(\w)/g, function (all, letter) {
return letter.toUpperCase();
});
};
/*******
* @description: 将对象中的键转小写
* @author: 琴时
* @param {Object} obj
* @return {Object}
*/
var lowercaseKeys = exports.lowercaseKeys = function lowercaseKeys(obj) {
var result = {};
for (var key in obj) {
if (Object.hasOwnProperty.call(obj, key)) {
var lowercaseKey = key.toLowerCase();
result[lowercaseKey] = obj[key];
}
}
return result;
};
/*******
* @description: 将对象中的键转大写
* @author: 琴时
* @param {Object} obj
* @return {Object}
*/
var upperCaseKeys = exports.upperCaseKeys = function upperCaseKeys(obj) {
var result = {};
for (var key in obj) {
if (Object.hasOwnProperty.call(obj, key)) {
var lowercaseKey = key.toUpperCase();
result[lowercaseKey] = obj[key];
}
}
return result;
};
;