记录一下JavaScript的各种函数方法


前言

记录一下JavaScript的各种自定义工具函数。



数组

对象List分组

function groupBy(array, f) { //数据根据某个字段分组
let groups = {};
array.forEach(function (o) {
let group = JSON.stringify(f(o));
groups[group] = groups[group] || [];
groups[group].push(o);
});
return Object.keys(groups).map(function (group) {
return groups[group];
});
}

判断数组的某个字段的值是否在数组中存在

function inArray(array, field, val) {
var inArr = false;
array.forEach(a => {
if (a[field] === val) {
inArr = true;
}
})
return inArr;
}

日期时间

获取时间(时分秒)

function getDateTime(date) {// 仅获取时间
date = new Date(date)
let h = date.getHours();
let m = date.getMinutes();
let s = date.getSeconds();
return (h + "").padStart(2, '0') + ":" + (m + "").padStart(2, '0')
}

获取日期

function getYMDNEW(params,format) {
let newDate = new Date(params);
return newDate.getFullYear() + format + ((newDate.getMonth() + 1) + "").padStart(2, '0') + format + (newDate.getDate() + "").padStart(2, '0')
}

获取日期时间

function formatterDate(date,format) {  // 日期时间格式化 "-"
date = new Date(date)
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
let h = date.getHours();
let m = date.getMinutes()
let s = date.getSeconds();
return year + format + (month + "").padStart(2, '0') + format + (day + "").padStart(2, '0') + " " + (h + "").padStart(2, '0') + ":" + (m + "").padStart(2, '0') + ":" + (s + "").padStart(2, '0')
}

时间比较

// 判断大于
function timeGt(beginTime, nowTime) {
let beginDate = new Date(beginTime);
let nowDate = new Date(nowTime);
let bTime = beginDate.getTime();
let nTime = nowDate.getTime();
if (nTime - bTime >= 0) {
return true;
} else {
return false;
}
}

根据一周某天获取所有日期

function getWeekDays(date) {  //获取一周所有日期
var currentDate = new Date(date)
var timesStamp = currentDate.getTime()
var currenDay = currentDate.getDay()
var dates = []
var oneday = 24 * 60 * 60 * 1000
for (let index = 0; index < 7; index++) {
dates.push(getYMDNEW(new Date(timesStamp + oneday * (index - (currenDay + 6) % 7)).toLocaleDateString().replace(/\//g, '-')))
}
return dates
}

获取一个月的天数

/*获取一个月的天数 */
function getCountDays(date) {
var curDate = new Date(date);
var curYear = curDate.getFullYear()
/* 获取当前月份 */
var curMonth = curDate.getMonth();
/* 生成实际的月份: 由于curMonth会比实际月份小1, 故需加1 */
curDate.setMonth(curMonth + 1);
/* 将日期设置为0, 这里为什么要这样设置, 我不知道原因, 这是从网上学来的 */
curDate.setDate(0);
/* 返回当月的天数 */
curDate.getDate();
var dayArry = [];
for (var k = 1; k <= curDate.getDate(); k++) {
var day = curYear + "-" + ((curMonth + 1) + "").padStart(2, '0')
day += ("-" + (k + "").padStart(2, '0'))
dayArry.push(day);
}
return dayArry;
}

获取一个月的第一天和最后一天

function getFirstDay(date) { //获取一个月的第一天和最后一天
let dayArry = getCountDays(date)
let firstEnd = []
// console.log(dayArry)
firstEnd.push(dayArry[0])
firstEnd.push(dayArry[dayArry.length - 1])
return firstEnd;
}

获取星期几

function getWeek(date) { // 获取星期
var newDate = new Date(date);
var day = newDate.getDay() == 0 ? 7 : newDate.getDay()
var chnNumChar = ["一", "二", "三", "四", "五", "六", "日"];
return "星期" + chnNumChar[day - 1]
}

获取明天日期

function getTomorrow(todayDate) {  //获取明天的日期
todayDate = new Date(todayDate);
var date = new Date(todayDate.getTime() + 24 * 60 * 60 * 1000);
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
let h = date.getHours();
let m = date.getMinutes()
let s = date.getSeconds();
return year + '-' + month + "-" + (day + "").padStart(2, '0') + " " + (h + "").padStart(2, '0') + ":" + (m + "").padStart(2, '0') + ":" + (s + "").padStart(2, '0')
}

获取昨天的日期

function getYesterday(todayDate) {  
todayDate = new Date(todayDate);
var date = new Date(todayDate.getTime() - 24 * 60 * 60 * 1000);
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
let h = date.getHours();
let m = date.getMinutes()
let s = date.getSeconds();
return year + '-' + month + "-" + (day + "").padStart(2, '0') + " " + (h + "").padStart(2, '0') + ":" + (m + "").padStart(2, '0') + ":" + (s + "").padStart(2, '0')
}

判断在时间范围内(不等于)

function timeRange(beginTime, endTime, nowTime) { //判断在时间范围内
let beginDate = new Date(beginTime);
let endDate = new Date(endTime);
let nowDate = new Date(nowTime);
let bTime = beginDate.getTime();
let eTime = endDate.getTime();
let nTime = nowDate.getTime();
return (nTime - eTime < 0 && nTime - bTime > 0) ? true : false
}

判断在时间范围内(包含等于)

function timeRange2(beginTime, endTime, nowTime) { //判断在时间范围内(包括等于)
let beginDate = new Date(beginTime);
let endDate = new Date(endTime);
let nowDate = new Date(nowTime);
let bTime = beginDate.getTime();
let eTime = endDate.getTime();
let nTime = nowDate.getTime();
return (nTime - eTime <= 0 && nTime - bTime >= 0) ? true : false
}

判断字段是否为日期

function isValidDate(date) {
return date instanceof Date && !isNaN(date.getTime())
}

判断是否为空

判断数字是否为空或0

function judgeVal(val) {
return val == '0' || val == 0 || val == null || val ==''
}

判断是否为空

function isNullOrEmpty(str) {
return str === "" || str === null;
}