设置、获取、删除cookie
let _cookie = {
set: function (key, value, time) {
let _time = time || 30;
let _date = new Date();
_date.setTime(_date.getTime() + (_time * 24 * 60 * 60 * 1000));
document.cookie = key + '=' + value + '; expires=' + _date;
},
get: function (key) {
let $cookie = document.cookie;
let tempCookie = $cookie.split('; ');
for (let i = 0; i < tempCookie.length; i++) {
let temp = tempCookie[i].split('=');
if (temp[0] == key) {
return temp[1];
}
}
},
delete: function (key) {
document.cookie = key + '=; expries=-1;';
}
}
获取用户设备
function getUserDevice() {
var ua = navigator.userAgent.toLowerCase()
if (ua.match(/iPhone\sOS/i) === 'iphone os' || ua.match(/iPad/i) === 'ipad') {
return 'iOS'
} else if (ua.match(/Android/i) === 'android') {
return 'Android'
} else {
return 'Web'
}
}
获取数据类型
function getDataType(param) {
return Object.prototype.toString.call(param).slice(8, -1);
}
1. 字符串
字符串去重
function uniqueStr(str) {
let newStr = '';
for (let i = 0; i < str.length; i++) {
if (newStr.indexOf(str[i]) == -1) {
newStr += str[i];
}
}
return newStr;
}
获取网络地址中的参数
function getHrefParam(url) {
let url = url || window.location.href;
let paramStartIdx = url.indexOf('?');
let paramStr = url.slice(paramStartIdx + 1, -1);
let paramStrArr = paramStr.split('&');
let paramObj = {};
for (let i = 0; i < paramStrArr.length; i++) {
let temp = paramStrArr[i].split('=');
paramObj[temp[0]] = temp[1];
}
return paramObj;
}
2. 数字
数字补零
function formatNumberZeroize(number, len) {
let _currLen = number.toString().length;
let _zero = '';
for (let i = 0; i < len - _currLen; i++) {
_zero += '0';
}
return _zero + number;
}
为数字添加分位符
function splitNumber(number, separator) {
let _numStr = parseInt(number).toString();
let _sep = separator || ',';
let _newNumberStr = '';
for (let i = _numStr.length - 1; i >= 0; i--) {
if ((i + 1) % 3 == 0 && i != _numStr.length - 1) {
_newNumberStr += _sep + _numStr[_numStr.length - i - 1];
}else {
_newNumberStr += _numStr[_numStr.length - i - 1];
}
}
return _newNumberStr;
}
3.数组
数组去重
function uniqueArray(arr) {
return [...new Set(arr)]
}
数组排序
function sortArray(arr, isReverse) {
for (let i = 0; i < arr.length - 1; i++) {
for (let j = 1; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
let temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
if (isReverse) {
arr.reverse();
return arr;
} else {
return arr;
}
}
两个数字范围内生成指定数量的不重复随机数
function getRandoms(min, max, count) {
var randomArr = [];
for (i = 0; i < count; i++) {
var _random = Math.ceil(Math.random() * (max - min) + min);
while (checkNumInArr(_random,randomArr)) {
_random = Math.ceil(Math.random() * (max - min) + min);
}
randomArr[i] = _random;
}
return randomArr;
}
检查数组中是否包含某元素
function checkNumInArr(ele, arr) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] == ele) {
return true;
}
}
return false;
}
4. 日期时间
格式化日期时间
function formatDate(date, formatStr) {
if (getDataType(date) == 'Number') {
if (date.toString().length == 10) {
date = date * 1000;
}
}
let _date = new Date(date);
let formatArr = ['Y', 'M', 'D', 'h', 'm', 's'];
let newArr = [];
let newFormatStr = '';
let Y = _date.getFullYear();
let M = formatNumberZeroize(_date.getMonth() + 1, 2);
let D = formatNumberZeroize(_date.getDate(), 2);
let h = formatNumberZeroize(_date.getHours(), 2);
let m = formatNumberZeroize(_date.getMinutes(), 2);
let s = formatNumberZeroize(_date.getSeconds(), 2);
newArr.push(Y, M, D, h, m, s);
for (let i = 0; i < formatStr.length; i++) {
let _idx = formatArr.indexOf(formatStr[i]);
if (_idx != -1) {
newFormatStr += newArr[_idx];
} else {
newFormatStr += formatStr[i];
}
}
return newFormatStr;
}
计算两个日期的时间差
function betweenDate(startDate, endDate) {
let _start = new Date(startDate).getTime();
let _end = new Date(endDate).getTime();
let _between = _start > _end ? _start - _end : _end - _start;
let _betweenObj = {}
let d = Math.floor(_between / (24 * 60 * 60 * 1000));
let h = Math.floor(_between % (24 * 60 * 60 * 1000) / (60 * 60 * 1000));
let m = Math.floor(_between % (24 * 60 * 60 * 1000) % (60 * 60 * 1000) / (60 * 1000));
let s = Math.floor(_between % (24 * 60 * 60 * 1000) % (60 * 60 * 1000) % (60 * 1000) / 1000);
let ms = Math.floor(_between % (24 * 60 * 60 * 1000) % (60 * 60 * 1000) % (60 * 1000) % 1000);
_betweenObj.d = d;
_betweenObj.h = h;
_betweenObj.m = m;
_betweenObj.s = s;
_betweenObj.ms = ms;
return _betweenObj;
}