ES6 之 常用函数封装

把日期类型转成字符串类型 


  dateFormat(time) {        

if (time == null || time == "" || time == " ") {   

         return "";

 }       

 time = new Date(time);      

 let year = time.getFullYear();  

 let month = (time.getMonth() + 1) >= 10 ? (time.getMonth() + 1) : 0 + "" + (time.getMonth() + 1);   

 let day = time.getDate() >= 10 ? time.getDate() : 0 + "" + time.getDate();  

time = year + "-" + month + "-" + day;    

 return time;    }


求 数组的最小值


 Math.trunc(Math.min.apply(null, minnum));

求 数组的最大值


var minnum = [ 2,7,8,4,6,5]

 Math.trunc(Math.max.apply(null, minnum));


求 平均值


function average(nums) {

    return (nums.reduce((a, b) => Number(a) + Number(b)) / nums.length).toFixed(2);

  }

average(minnum);

生成随机UID


const genUid = ()=> {

  var length = 20

  var soupLength = genUid.soup_.length

  var id = []

  for (var i = 0; i < length; i++) {

    id[i] = genUid.soup_.charAt(Math.random() * soupLength)

  }

  return id.join('')

}

genUid.soup_ = '!#$()*+,-./:;=@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';

genUid() // ;l`yCPc9A8IuK}?N6,%}


无loop生成指定长度的数组


const List = len=> [...new Array(len).keys()]

const list = List(10) // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]


RGB色值生成16进制色值


const rgb2Hex = (r, g, b) => {

    r = Math.max(Math.min(Number(r), 100), 0) * 2.55

    g = Math.max(Math.min(Number(g), 100), 0) * 2.55

    b = Math.max(Math.min(Number(b), 100), 0) * 2.55

    r = ('0' + (Math.round(r) || 0).toString(16)).slice(-2)

    g = ('0' + (Math.round(g) || 0).toString(16)).slice(-2)

    b = ('0' + (Math.round(b) || 0).toString(16)).slice(-2)

    return '#' + r + g + b

}

rgb2Hex(100, 50, 0) // "#ff7f00"


颜色混合


const colourBlend = (c1, c2, ratio) => {

    ratio = Math.max(Math.min(Number(ratio), 1), 0)

    let r1 = parseInt(c1.substring(1, 3), 16)

    let g1 = parseInt(c1.substring(3, 5), 16)

    let b1 = parseInt(c1.substring(5, 7), 16)

    let r2 = parseInt(c2.substring(1, 3), 16)

    let g2 = parseInt(c2.substring(3, 5), 16)

    let b2 = parseInt(c2.substring(5, 7), 16)

    let r = Math.round(r1 * (1 - ratio) + r2 * ratio)

    let g = Math.round(g1 * (1 - ratio) + g2 * ratio)

    let b = Math.round(b1 * (1 - ratio) + b2 * ratio)

    r = ('0' + (r || 0).toString(16)).slice(-2)

    g = ('0' + (g || 0).toString(16)).slice(-2)

    b = ('0' + (b || 0).toString(16)).slice(-2)

    return '#' + r + g + b

}

colourBlend('#ff0000', '#3333ff', 0.5) // "#991a80"


判断是否为质数


const mathIsPrime = n=> {

  if (n === 2 || n === 3) {

    return true

  }

  if (isNaN(n) || n <= 1 || n % 1 != 0 || n % 2 == 0 || n % 3 == 0) {

    return false;

  }

  for (let x = 6; x <= Math.sqrt(n) + 1; x += 6) {

    if (n % (x - 1) == 0 || n % (x + 1) == 0) {

      return false

    }

  }

  return true

}

mathIsPrime(0) // true


遍历类数组对象


const elements = document.querySelectorAll(selector);

[].prototype.forEach.call(elements, (el, idx, list) => {

    console.log(el) // 元素节点

})


优化多层判断条件


const getScore = score=> {

    const scoreData = new Array(101).fill(0)

    .map((data, idx) => ([idx, () => (idx < 60 ? '不及格' : '及格')]))

    const scoreMap = new Map(scoreData)

    return (scoreMap.get(score) 

          ? scoreMap.get(score)() 

          : '未知分数')

}

getScore(30) // 不及格


时间格式化


const dateFormatter = (formatter, date) => {

    date = (date ? new Date(date) : new Date)

    const Y = date.getFullYear() + '',

          M = date.getMonth() + 1,

          D = date.getDate(),

          H = date.getHours(),

          m = date.getMinutes(),

          s = date.getSeconds()

    return formatter.replace(/YYYY|yyyy/g, Y)

                    .replace(/YY|yy/g, Y.substr(2, 2))

                    .replace(/MM/g, (M < 10 ? '0' : '') + M)

                    .replace(/DD/g, (D < 10 ? '0' : '') + D)

                    .replace(/HH|hh/g, (H < 10 ? '0' : '') + H)

                    .replace(/mm/g, (m < 10 ? '0' : '') + m)

                    .replace(/ss/g, (s < 10 ? '0' : '') + s)

}

dateFormatter('YYYY-MM-DD HH:mm', '1995/02/15 13:55') // 1995-02-15 13:55

你可能感兴趣的:(ES6 之 常用函数封装)