js常用小工具

map與json互轉

map轉json

  1. 先將Map轉化爲Object;
  2. 再將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

  1. 先使用JSON.parse()函數解析json串;
  2. 再將解析結果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 '星期日'
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章