function repeat(str, n) {
let res = '';
while(n) {
if(n % 2 === 1) {
res += str;
}
if(n > 1) {
str += str;
}
n >>= 1;
}
return res;
}
格式化时间
function dateFormater(formater, t) {
let date = t ? new Date(t) : new Date(),
Y = date.getFullYear() + '',
M = date.getMonth() + 1,
D = date.getDate(),
H = date.getHours(),
m = date.getMinutes(),
s = date.getSeconds();
return formater.replace(/YYYY|yyyy/g, Y)
.replace(/YY|yy/g, Y.substr(2,2))
.replace(/MM/g, (M<10?'0':'') + M)
.replace(/DD/g, (D<10?'0':'') + D)
.replace(/HH|hh/g,(H<10?'0':'') + H)
.replace(/mm/g,(m<10?'0':'') + m)
.replace(/ss/g,(s<10?'0':'') + s)
}
将指定字符串由一种时间格式转化为另一种
function dateStrForma(str, from, to) {
str += '';
let Y = '';
if((Y = from.indexOf('YYYY')) >= 0){
Y = str.substr(Y, 4);
to = to.replace(/YYYY|yyyy/g, Y);
} else if((Y = from.indexOf('YY')) >= 0) {
Y = str.substr(Y, 2);
to = to.replace(/YY|yy/g, Y);
}
let k,i;
['M','D','H','h','m','s'].forEach(s => {
i = from.indexOf(s+s);
k = ~i ? str.substr(i, 2) : '';
to = to.replace(s+s, k);
});
return to;
根据字符串路径获取对象属性 : ‘obj[0].count’
function getPropByPath(obj, path, strict) {
let tempObj = obj;
path = path.replace(/[(\w+)]/g, '.$1'); //将[0]转化为.0
path = path.replace(/^\./, ''); //去除开头的.
let keyArr = path.split('.'); //根据.切割
let i = 0;
for(let len = keyArr.length; i < len - 1; ++i) {
if (!tempObj && !strict) break;
let key = keyArr[i];
if (key in tempObj) {
tempObj = tempObj[key];
} else {
if (strict) {//开启严格模式,没找到对应key值,抛出错误
throw new Error('please transfer a valid prop path to form item!');
}
break;
}
}
return {
o: tempObj, //原始数据
k: keyArr[i], //key值
v: tempObj ? tempObj[keyArr[i]] : null // key值对应的值
};
}
检测数据是不是基本数据类型
function isStatic(v) {
return(
typeof v === 'string' ||
typeof value === 'number' ||
typeof value === 'boolean' ||
typeof value === 'undefined' ||
typeof value === 'symbol'
)
}
判断数据是不是引用数据类型
function isObject(v) {
let type = typeof v;
return v !== null && (type == 'object' || type == 'function');
}
判断数据是不是数组
function isArray(v) {
return (
v instanceof Array ||
Array.isArray(v) ||
Object.prototype.toString.call(v) === '[object Array]'
)
}
检测数据是什么类型
function isType(value) {
let type = Object.prototype.toString.call(value);
switch (type) {
case "[object String]":
return "字符串";
case "[object Number]":
return "数字";
case "[object Boolean]":
return "布尔";
case "[object Function]":
return "函数";
case "[object Array]":
return "数组";
case "[object Object]":
return "对象";
case "[object Date]":
return "日期";
case "[object RegExp]":
return "正则";
case "[object Math]":
return "数学对象";
case "[object Undefined]":
return "未定义";
case "[object Null]":
return "空";
}
}
返回 值的类型
function getRawType(v) {
return Object.prototype.toString.call(v).slice(8, -1);
}
function isPCBroswer() {
let e = navigator.userAgent.toLowerCase()
, t = "ipad" == e.match(/ipad/i)
, i = "iphone" == e.match(/iphone/i)
, r = "midp" == e.match(/midp/i)
, n = "rv:1.2.3.4" == e.match(/rv:1.2.3.4/i)
, a = "ucweb" == e.match(/ucweb/i)
, o = "android" == e.match(/android/i)
, s = "windows ce" == e.match(/windows ce/i)
, l = "windows mobile" == e.match(/windows mobile/i);
return !(t || i || r || n || a || o || s || l)
}