var a = { "key":"value" ,"key3":"value","key2":"value" }; var b = Object.keys(a);
var c = [];
for( var i = 0 ; i < b.length ; i++ ){
var value = b[i]
console.log( value )
console.log( a.value )
c.push( { name: b[i] , value : a[value] } )
}
console.log(c)
从数组中删除某个指定的值
Array.prototype.indexOf = function (val) {
for (var i = 0; i < this.length; i++) {
if (this[i] == val) return i;
}
return -1;
};
Array.prototype.remove = function (val) {
var index = this.indexOf(val);
if (index > -1) {
this.splice(index, 1);
}
};
var temp = ['2','3','4'];
temp.remove('2');
表单序列化
export const serialize = data => {
let list = []
Object.keys(data).forEach(ele => {
list.push(`${ele}=${data[ele]}`)
})
return list.join('&')
}
export const findArray = (dic, value) => {
for (let i = 0; i < dic.length; i++) {
if (dic[i].value == value) {
return i
}
}
return -1
}
根据字典的value显示label
export const findByvalue = (dic, value) => {
let result = ''
if (validatenull(dic)) return value
if (typeof (value) === 'string' || typeof (value) === 'number' || typeof (value) === 'boolean') {
let index = 0
index = findArray(dic, value)
if (index != -1) {
result = dic[index].label
} else {
result = value
}
} else if (value instanceof Array) {
result = []
let index = 0
value.forEach(ele => {
index = findArray(dic, ele)
if (index != -1) {
result.push(dic[index].label)
} else {
result.push(value)
}
})
result = result.toString()
}
return result
}
生成随机len位数字
export const randomLenNum = (len, date) => {
let random = ''
random = Math.ceil(Math.random() * 100000000000000).toString().substr(0, len || 4)
if (date) random = random + Date.now()
return random
}
解决ie9不兼容placeholder问题
export function compatiblePlaceholder() {
if (!('placeholder' in document.createElement('input'))) {
// 将返回的nodeList对象转为数组
var nodes = Array.prototype.slice.call(document.querySelectorAll('[placeholder]'))
nodes.forEach(function (item, index) {
if (item.nextElementSibling) {
} else {
item.addEventListener('focus', function () {
this.nextSibling.style.display = 'none'
})
item.addEventListener('blur', function () {
if (!this.value) {
this.style.display = 'none'
this.nextSibling.style.display = 'inline'
}
})
var cloneNode = item.cloneNode()
// 如果[type='password']类型,则转为text
if (cloneNode.getAttribute('type').toLowerCase() === 'password') {
cloneNode.setAttribute('type', 'text')
}
cloneNode.setAttribute('value', cloneNode.getAttribute('placeholder'))
cloneNode.style.display = 'none'
item.insertAdjacentHTML('afterend', cloneNode.outerHTML)
item.nextSibling.addEventListener('focus', function () {
this.style.display = 'none'
this.previousSibling.style.display = 'inline'
this.previousSibling.focus()
})
if (!item.value) {
item.style.display = 'none'
item.nextSibling.style.display = 'inline'
}
}
})
}
}
精度丢失转换(乘法)
export function accMul(arg1, arg2) {
let m = 0, s1 = arg1.toString(), s2 = arg2.toString();
try { m += s1.split(".")[1].length } catch (e) { }
try { m += s2.split(".")[1].length } catch (e) { }
return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
}
节流函数
/**
* 节流函数,在一段时间内,回调函数只执行一次
* @param {Function} fun 需要节流的函数
* @param {number} delay 节流的时间,单位为毫秒
*/
export function throttle(fun, delay) {
let valid = true;
return function() {
let context = this;
let args = arguments;
if (!valid) {
return;
}
valid = false;
setTimeout(() => {
fn.apply(context, args);
valid = true;
}, delay);
}
}
export const spaceTime = function (atime) {
atime = atime.replace(/-/g, '/'); //IE出现兼容问题,带“-”格式的时间无法被new Date()转成时间格式,返回NaN.
let byTime = [365 * 24 * 60 * 60 * 1000, 24 * 60 * 60 * 1000, 60 * 60 * 1000, 60 * 1000, 1000];
let unit = ["年", "天", "小时", "分钟", "秒钟"];
var ct = new Date().getTime() - new Date(atime).getTime();
if (ct <= 1000) {
// return "时间数据出错!"
return "刚刚"
}
var sb = [];
for (var i = 0; i < byTime.length; i++) {
if (ct < byTime[i]) {
continue;
}
var temp = Math.floor(ct / byTime[i]);
ct = ct % byTime[i];
if (temp > 0) {
sb.push(temp + unit[i]);
}
/*一下控制最多输出几个时间单位:
一个时间单位如:N分钟前
两个时间单位如:M分钟N秒前
三个时间单位如:M年N分钟X秒前
以此类推
*/
if (sb.length >= 1) {
break;
}
}
return (sb.join("") + "前");
}
获取当前年月
export const getNowFormatDate = function() {
var date = new Date();
var seperator1 = "-";
var year = date.getFullYear();
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
var currentdate = year + seperator1 + month;
return currentdate;
}
获取指定时间年月日
export const getFormatDate = function(data) {
var date = new Date(data);
var seperator1 = "-";
var year = date.getFullYear();
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
var currentdate = year + seperator1 + month+strDate;
return currentdate;
}
获取距离当前时间多久的时间
/**
* 获取距离当前时间多久的时间
* @param type year年/month月/week周/day日
* @param number -为之前/+为之后
*/
export const getBeforAfterTime = function(type=null,number=0) {
var nowdate = new Date();
switch (type) {
case "day": //取number天前、后的时间
nowdate.setTime(nowdate.getTime() + (24 * 3600 * 1000) * number);
var y = nowdate.getFullYear();
var m = nowdate.getMonth() + 1;
var d = nowdate.getDate();
var retrundate = y + '/' + m + '/' + d;
break;
case "week": //取number周前、后的时间
nowdate.setTime(nowdate.getTime() + (7 * 24 * 3600 * 1000) * number);
var y = nowdate.getFullYear();
var m = nowdate.getMonth() + 1;
var d = nowdate.getDate();
var retrundate = y + '/' + m + '/' + d;
break;
case "month": //取number月前、后的时间
nowdate.setMonth(nowdate.getMonth() + number);
var y = nowdate.getFullYear();
var m = nowdate.getMonth() + 1;
var d = nowdate.getDate();
var retrundate = y + '/' + m + '/' + d;
break;
case "year": //取number年前、后的时间
nowdate.setFullYear(nowdate.getFullYear() + number);
var y = nowdate.getFullYear();
var m = nowdate.getMonth() + 1;
var d = nowdate.getDate();
var retrundate = y + '/' + m + '/' + d;
break;
default: //取当前时间
var y = nowdate.getFullYear();
var m = nowdate.getMonth() + 1;
var d = nowdate.getDate();
var retrundate = y + '/' + m + '/' + d;
}
return retrundate;
}
获取某个时间的月份天数
export function getDays( date ){
var date = new Date(date);
var year = date.getFullYear();
var month = date.getMonth()+1;
var d = new Date(year, month, 0);
return d.getDate();
}
获取一周开始时间结束时间
export function getWeek( date ){
var date = new Date(date);
// 周一的日期
date.setDate(date.getDate() - date.getDay() + 1);
var begin = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() ;
// 周日的日期
date.setDate(date.getDate() + 6);
var end = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() ;
console.log(begin,end);
}
正则校验篇邮箱
export function isEmail (s) {
return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)
}
手机号码
export function isMobile (s) {
return /^1[0-9]{10}$/.test(s)
}
电话号码
export function isPhone (s) {
return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)
}
匹配腾讯QQ号
export function isQQ (s) {
return /[1-9][0-9]{4,}/.test(s)
}
URL地址
export function isURL (s) {
return /^http[s]?:\/\/.*/.test(s)
}