|
|
@@ -17,6 +17,11 @@ function remove(arr, val) {
|
|
|
* @param {*} b
|
|
|
*/
|
|
|
function isEqual(a,b){
|
|
|
+ var classNameA,
|
|
|
+ classNameB,
|
|
|
+ propsA,
|
|
|
+ propsB,
|
|
|
+ i, j, propName;
|
|
|
//如果a和b本来就全等
|
|
|
if(a===b){
|
|
|
//判断是否为0和-0
|
|
|
@@ -27,7 +32,7 @@ function isEqual(a,b){
|
|
|
return a===b;
|
|
|
}
|
|
|
//接下来判断a和b的数据类型
|
|
|
- var classNameA=Object.prototype.toString.call(a),
|
|
|
+ classNameA=Object.prototype.toString.call(a);
|
|
|
classNameB=Object.prototype.toString.call(b);
|
|
|
//如果数据类型不相等,则返回false
|
|
|
if(classNameA !== classNameB){
|
|
|
@@ -50,35 +55,16 @@ function isEqual(a,b){
|
|
|
if(classNameA === '[object Date]' || classNameA === '[object Boolean]') {
|
|
|
return +a === +b;
|
|
|
}
|
|
|
- // switch(classNameA){
|
|
|
- // case '[object RegExp]':
|
|
|
- // case '[object String]':
|
|
|
- // //进行字符串转换比较
|
|
|
- // return '' + a ==='' + b;
|
|
|
- // case '[object Number]':
|
|
|
- // //进行数字转换比较,判断是否为NaN
|
|
|
- // if(a.toString !== 'NaN'){
|
|
|
- // return a === b;
|
|
|
- // }
|
|
|
- // //判断是否为0或-0
|
|
|
- // return +a === 0?1/ +a === 1/b : +a === +b;
|
|
|
- // case '[object Date]':
|
|
|
- // case '[object Boolean]':
|
|
|
- // return +a === +b;
|
|
|
- // default : {
|
|
|
- // return false
|
|
|
- // }
|
|
|
- // }
|
|
|
//如果是对象类型
|
|
|
if(classNameA === '[object Object]'){
|
|
|
//获取a和b的属性长度
|
|
|
- var propsA = Object.getOwnPropertyNames(a),
|
|
|
+ propsA = Object.getOwnPropertyNames(a);
|
|
|
propsB = Object.getOwnPropertyNames(b);
|
|
|
if(propsA.length !== propsB.length){
|
|
|
return false;
|
|
|
}
|
|
|
- for(var i=0;i<propsA.length;i++){
|
|
|
- var propName=propsA[i];
|
|
|
+ for(i=0;i<propsA.length;i++){
|
|
|
+ propName=propsA[i];
|
|
|
//如果对应属性对应值不相等,则返回false
|
|
|
//if(a[propName] !== b[propName]){
|
|
|
if(!isEqual(a[propName], b[propName])){
|
|
|
@@ -89,9 +75,8 @@ function isEqual(a,b){
|
|
|
}
|
|
|
//如果是数组类型
|
|
|
if(classNameA === '[object Array]'){
|
|
|
- let i = 0;
|
|
|
- for(i; i < a.length;i++) {
|
|
|
- if(!isEqual(a[i], b[i])) {
|
|
|
+ for(j = 0; j < a.length;j++) {
|
|
|
+ if(!isEqual(a[j], b[j])) {
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
@@ -252,12 +237,12 @@ function numberFormat(number, decimals, thousands_sep) {
|
|
|
};
|
|
|
|
|
|
function _scientificNotationToString(param) {
|
|
|
- let strParam = String(param);
|
|
|
- let flag = /e/.test(strParam)
|
|
|
+ var strParam = String(param);
|
|
|
+ var flag = /e/.test(strParam)
|
|
|
if (!flag) return strParam
|
|
|
|
|
|
- let positive = true; // 正数
|
|
|
- let sysbol = true; // 指数符号 true: 正,false: 负
|
|
|
+ var positive = true; // 正数
|
|
|
+ var sysbol = true; // 指数符号 true: 正,false: 负
|
|
|
if (/^-/.test(strParam)) {
|
|
|
positive = false;
|
|
|
}
|
|
|
@@ -265,16 +250,30 @@ function _scientificNotationToString(param) {
|
|
|
sysbol = false
|
|
|
}
|
|
|
// 指数
|
|
|
- let index = Number(strParam.match(/\d+$/)[0])
|
|
|
+ var index = Number(strParam.match(/\d+$/)[0])
|
|
|
// 基数
|
|
|
- let basis = strParam.match(/^[+-]{0,1}[\d\.]+/)[0].replace(/[+-.]/g, '');
|
|
|
+ var basis = strParam.match(/^[+-]{0,1}[\d\.]+/)[0].replace(/[+-.]/g, '');
|
|
|
|
|
|
- let absNum = sysbol ? basis.padEnd(index + 1, 0) : basis.padStart(index + basis.length, 0).replace(/^0/, '0.');
|
|
|
+ var absNum = sysbol ? basis.padEnd(index + 1, 0) : basis.padStart(index + basis.length, 0).replace(/^0/, '0.');
|
|
|
return (positive ? '' : '-') + absNum;
|
|
|
}
|
|
|
|
|
|
+function base64ToBlob(code) {
|
|
|
+ var parts = code.split(';base64,');
|
|
|
+ var contentType = parts[0].split(':')[1];
|
|
|
+ var raw = window.atob(parts[1]);
|
|
|
+ var rawLength = raw.length;
|
|
|
+
|
|
|
+ var uInt8Array = new Uint8Array(rawLength);
|
|
|
+
|
|
|
+ for (var i = 0; i < rawLength; ++i) {
|
|
|
+ uInt8Array[i] = raw.charCodeAt(i);
|
|
|
+ }
|
|
|
+ return new Blob([uInt8Array], {type: contentType});
|
|
|
+}
|
|
|
+
|
|
|
;exports = module.exports = (function(){
|
|
|
return { remove, isEqual, getUrlParam, hashcode, delay, dateFormat, arrayToTree, arrayEquals, deepAssign,
|
|
|
- HexToRGB, RGBToHex, numberFormat
|
|
|
+ HexToRGB, RGBToHex, numberFormat, base64ToBlob
|
|
|
}
|
|
|
})();
|