總結 js 業務中經常使用函數(持續更新。。。)

前言:工做的過程當中總結的乾貨,會持續更新哦。。。數組

1.random()bash

/*
 * @name: random
 * @description: 產生隨機整數,包含下限值,包括上限值
 * @param {Number} lower 下限
 * @param {Number} upper 上限
 * @return {Number} 返回在下限到上限之間的一個隨機整數
 */
export function random(lower, upper) {
	return Math.floor(Math.random() * (upper - lower+1)) + lower;
}
複製代碼
  1. randomColor()
/*
 * @name: randomColor
 * 產生一個隨機的rgb顏色
 * @return {String}  返回顏色rgb值字符串內容,如:rgb(201, 57, 96)
 */
export function randomColor() {
	// 隨機生成 rgb 值,每一個顏色值在 0 - 255 之間
	var r = random(0, 256),
		g = random(0, 256),
		b = random(0, 256);
	// 鏈接字符串的結果
	var result = "rgb("+ r +","+ g +","+ b +")";
	// 返回結果
	return result;
}
複製代碼
  1. getFormatCode()
/*
 * @name: getFormatCode
 * @description: 根據Value格式化爲帶有換行、空格格式的HTML代碼
 * @param: strValue {String} 須要轉換的值
 * @return: {String}轉換後的HTML代碼
 * @example getFormatCode("測\r\n\s試")  =>  「測<br/> 試」
 */

export function getFormatCode(strValue) {
    return strValue.replace(/\r\n/g, '<br/>').replace(/\n/g, '<br/>').replace(/\s/g, '&nbsp;')
}
複製代碼
  1. removal()
/*
 * @name: removal
 * @description: 數組中是對象,根據key去重
 * @param: arr {Array} 須要去重的數組
 *         key {Array} 惟一的字段
 * @return: {Array} 去重後的代碼
 * @example:removal([{id: 1}, {id: 2}, {id: 1}], "id")  =>  [{id: 1}, {id: 2}]
 */
export function removal(arr, key) {
    let hash = {};
    arr = arr.reduce((preVal, curVal) => {
        hash[curVal[key]] ? '' : hash[curVal[key]] = true && preVal.push(curVal);
        return preVal
    }, [])
}
複製代碼
  1. methodGetByteLen()
/*
 * @name: methodGetByteLen
 * @description: 超出多少個字(中文1個,2個英文算1個)顯示省略號
 * @param: str {String} 須要轉換的字符串
 *         num {Number} 超出多少個
 * @return: {String} 去重後的代碼
 * @example:removal('哈haha哈哈哈', 2)  =>  '哈ha...'
 */
export function methodGetByteLen(str, len) {
    let status = true
    if (!str) return ['-', status]
    let templen = 0
    for (let i = 0; i < str.length; i++) {
        if (str.charCodeAt(i) > 255) {
            templen += 2
        } else {
            templen++
        }
        if (templen >= len) {
            status = false
            return [str.substring(0, i) + '...', status]
        }
    }
    return [str, status]
}
複製代碼
  1. getFloatStr()
/*
 * @name: getFloatStr
 * @description: 數字自動補全並保留2位小數,將傳入數據轉換爲字符串,並清除字符串中非數字與.的字符,按數字格式補全字符串
 * @param:num {String,Number} 須要轉換的值
 * @return: {String} 轉換後數字
 * @example: getFloatStr("123.1")  =>  123.10
 */
export function getFloatStr(value) {
    if (isNaN(value)) {
        return value
    } else {
        var value = Math.round(parseFloat(value) * 100) / 100
        var xsd = value.toString().split('.')
        if (xsd.length == 1) {
            value = value.toString() + '.00'
            return value.toString()
        }
        if (xsd.length > 1) {
            if (xsd[1].length < 2) {
                value = value.toString() + '0'
            }
            return value.toString()
        }
    }
}
複製代碼
  1. milliFormat()
/*
 * @name: milliFormat
 * @description: 千位符並保留2位小數,將傳入數據轉換爲字符串,並清除字符串中非數字與.的字符,按數字格式補全字符串
 * @param: {Number,String} 須要轉換的值
 * @return: {String} 轉換後數字
 * @example: milliFormat("1023.1")  =>  1,023.10
 */
export function milliFormat(s) {
    s = String(s)
    s = s.replace(/^(\d*)$/, '$1.')
    s = (s + '00').replace(/(\d*\.\d\d)\d*/, '$1')
    s = s.replace('.', ',')
    var re = /(\d)(\d{3},)/
    while (re.test(s)) {
        s = s.replace(re, '$1,$2')
    }
    s = s.replace(/,(\d\d)$/, '.$1')
    return s.replace(/^\./, '0.')
}
複製代碼
  1. commafyback()
/*
 * @name: commafyback
 * @description: 去千位符
 * @param: str {String} 須要轉換的值
 * @return:  {String} 轉換後數字
 * @example: commafyback("102,123.18")  =>  102123.18
 */
export function commafyback(str) {
    var x = String(str).split(',')
    return x.join('')
}
複製代碼
  1. timestampToTime()
/*
 * @name: timestampToTime
 * @description: 時間戳轉化日期格式
 * @param:timestamp {Number} 時間戳
 *         flag {Boolean} 默認值true,時間戳爲10位傳true,時間戳爲13位傳flase
 * @return: {String} 轉換後數字
 * @example: timestampToTime(1403058804)  =>  2014-06-18 10:33:24
 */
export function timestampToTime(timestamp, flag=true) {
    //時間戳爲10位需*1000,時間戳爲13位的話不需乘1000
    let date = flag ? new Date(timestamp * 1000) : new Date(timestamp);
    Y = date.getFullYear() + '-';
    M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
    D = date.getDate() + ' ';
    h = date.getHours() + ':';
    m = date.getMinutes() + ':';
    s = date.getSeconds();
    return Y+M+D+h+m+s;
}

複製代碼

結尾:若是大家有什麼值得推薦的經常使用函數,歡迎在評論中補充,能夠收納在本文中。固然也能夠直接使用 lodash 這些比較流行的函數式工具庫,在這裏僅作學習參考使用。dom

相關文章
相關標籤/搜索