map與json互轉
map轉json
- 先將Map轉化爲Object;
- 再將Object轉爲Json
將map轉爲Object
_strMapToObj(strMap) {
let obj = Object.create(null);
for (let [k, v] of strMap) {
obj[k] = v;
}
return obj;
},
/**
*map轉換爲json
*/
_mapToJson(map) {
return JSON.stringify(this._strMapToObj(map));
},
json轉map
- 先使用JSON.parse()函數解析json串;
- 再將解析結果set到map中。
_objToStrMap(obj){
let strMap = new Map();
for (let k of Object.keys(obj)) {
strMap.set(k,obj[k]);
}
return strMap;
}
/**
*json轉換爲map
*/
_jsonToMap(jsonStr){
return this._objToStrMap(JSON.parse(jsonStr));
}
字符串處理工具
判斷是不是一個數字 或者 一個字符串裏全是數字
/**
* 判斷是不是一個數字 或者 一個字符串裏全是數字
*/
isNumber(value) {
if (value === undefined || value === null || value === '') {
return false
}
if (typeof (value) === 'string') {
//正整數
var reNumber = /^\d+$/
//負整數
var reNeNumber = /^-\d+$/
//正實數
var reRealNumber1 = /^[1-9]\d*[.]\d+$/ //非零開頭
var reRealNumber2 = /^0[.]\d+$/ //零開頭
//負實數
var reNeRealNumber1 = /^-[1-9]\d*[.]\d+$/ //非零開頭
var reNeRealNumber2 = /^-0[.]\d+$/ //零開頭
if (reNumber.test(value) || reNeNumber.test(value)
|| reRealNumber1.test(value) || reRealNumber2.test(value)
|| reNeRealNumber1.test(value) || reNeRealNumber2.test(value)) {
return true
}
else {
return false
}
}
else if (typeof (value) === 'number') {
return true
}
else {
return false
}
}
判斷字符串、對象、數組是否爲空,數組長度是否爲0,數值是否爲0
/**
* 判斷字符串、對象、數組是否爲空,數組長度是否爲0,數值是否爲0
* @param {Object} obj
*/
isEmpty(obj) {
if (typeof obj == null || obj == '' || obj == "undefined") return true
if (typeof obj == 'number' && obj == 0) return true
if (typeof obj == 'object' && (obj == '' || Object.keys(obj).length == 0)) return true
if (Array.isArray(obj) && obj.length == 0) return true
return false
}
##日期工具
比較月份,與當前月比較,小於0爲過去月份,大於0爲未來月份,等於0爲當前月份
/**
* 比較月份,與當前月比較,小於0爲過去月份,大於0爲未來月份,等於0爲當前月份
*/
isCompareMonth2CurMonth(ym) {
let sMonth = new Date(ym)
let fm = sMonth.getMonth()
let cMonth = new Date()
let cm = cMonth.getMonth()
return (sMonth.getFullYear() * 12 + fm) - (cMonth.getFullYear() * 12 + cm)
}
比較日期,與當日比較,小於0爲過去日期,大於0爲未來日期,等於0爲當前日期
/**
* 比較日期,與當日比較,小於0爲過去日期,大於0爲未來日期,等於0爲當前日期
*/
isCompareDate2CurDate(date) {
let sDate = new Date(date)
let td = new Date();
let seperator1 = "-";
let year = td.getFullYear();
let month = td.getMonth() + 1;
let strDate = td.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
let cDate = new Date(year + seperator1 + month + seperator1 + strDate);
return sDate == cDate ? 0 : sDate > cDate ? 1 : -1
}
比較日期,與當日比較差值,小於單前日期返回負值,等於返回0,大於返回正值
/**
* date參數格式爲‘yyyy-MM-dd’
* 比較日期,與當日比較差值,小於單前日期返回負值,等於返回0,大於返回正值
*/
isDifference2CurDate(date) {
let sDate = Date.parse(date)
let td = new Date();
let seperator1 = "-";
let year = td.getFullYear();
let month = td.getMonth() + 1;
let strDate = td.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
let cDate = Date.parse(year + seperator1 + month + seperator1 + strDate);
let dateSpan = sDate - cDate
let iDays = Math.floor(dateSpan / (24 * 3600 * 1000))
return iDays
}
使用‘-’分隔年月
/**
* 使用‘-’分隔年月
*/
getYM(month) {
let strs = month.split('-');
return strs
}
通過日期獲取天,dateTime格式爲‘yyyy-MM-dd 00:00:00’
/**
* 通過日期獲取天,dateTime格式爲‘yyyy-MM-dd 00:00:00’
*/
getDay4DateTime(dateTime) {
let fIndex = dateTime.lastIndexOf('-')
let lIndex = dateTime.indexOf(' ')
let d = dateTime.substring(fIndex + 1, lIndex)
return d.indexOf('0') == 0 ? d.substring(1) : d
}
獲取指定年月的最大天數
/**
* 獲取指定年月的最大天數
*/
getMonthMaxDay(y, m) {
return new Date(y, m, 0).getDate();
}
獲取當前日期,值返回yyyy-MM-dd
/**
* 獲取當前日期,值返回yyyy-MM-dd
*/
getCurrentDate() {
let date = new Date();
let seperator1 = "-";
let year = date.getFullYear();
let month = date.getMonth() + 1;
let strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
let currentdate = year + seperator1 + month + seperator1 + strDate;
return currentdate;
}
根據日期時間獲取星期
getWeekText(dateTime) {
// console.log(dateTime)
let date = new Date(dateTime)
let weekDay = date.getDay()
// console.log(weekDay)
switch (weekDay) {
case 0: return '星期日';
case 1: return '星期一';
case 2: return '星期二';
case 3: return '星期三';
case 4: return '星期四';
case 5: return '星期五';
case 6: return '星期六';
default: return '星期日'
}
}