记录一下JavaScript的各种函数方法
- 前言
- 数组
- 对象List分组
- 判断数组的某个字段的值是否在数组中存在
- 日期时间
- 获取时间(时分秒)
- 获取日期
- 获取日期时间
- 时间比较
- 根据一周某天获取所有日期
- 获取一个月的天数
- 获取一个月的第一天和最后一天
- 获取星期几
- 获取明天日期
- 获取昨天的日期
- 判断在时间范围内(不等于)
- 判断在时间范围内(包含等于)
- 判断字段是否为日期
- 判断是否为空
- 判断数字是否为空或0
- 判断是否为空
前言
记录一下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;
}