JS封装函数收纳

当前时间格式化

查看代码

<p class="next">今天是<span>1970</span>年<span>01</span>月<span>01</span>日</p>
<p class="tips">现在是<span>18</span>:<span>18</span>:<span>00</span></p>    
    
<script>
        //先调用一次,防止第一次刷新页面留白
        time()
        //1秒调用一次
        setInterval(time, 1000)
        function time() {
            //获取当前日期 和 时间
            let nowday = document.querySelectorAll('.next span')
            let nowtime = document.querySelectorAll('.tips span')

            let now = new Date() //创建now对象
            let y = now.getFullYear() //年
            let m = now.getMonth() + 1 //月
            let d = now.getDate() //天

            let h = now.getHours() //小时
            h = h < 10 ? '0' + h : h //格式化
            let min = now.getMinutes() //分
            m = m < 10 ? '0' + m : m //格式化
            let s = now.getSeconds() //秒
            s = s < 10 ? '0' + s : s //格式化
            
            nowday[0].innerHTML = y
            nowday[1].innerHTML = m
            nowday[2].innerHTML = d
            
            nowtime[0].innerHTML = h
            nowtime[1].innerHTML = min
            nowtime[2].innerHTML = s
        }
</script>

倒计时函数

查看代码

<body>
    <div class="countdown">
        <p class="title">倒计时</p>
        <p class="clock">
            <span id="hour">00</span>
            <i>:</i>
            <span id="minutes">25</span>
            <i>:</i>
            <span id="scond">20</span>
        </p>
    </div>

    <script>
        //先调用一次,方式第一次刷新页面留白
        time()
        //1秒调用一次
        setInterval(time, 1000)
        function time() {
       //一、【倒计时部分】
      // 1. 得到现在的时间戳
      let now = +new Date()
      // 2. 得到指定时间的时间戳
      let last = +new Date('2024-3-30 18:30:00')
      // 3. (计算剩余的毫秒数) / 1000 === 剩余的秒数
      let count = (last - now) / 1000
      // 4. 转换为时分秒
      let h = parseInt(count / 60 / 60 % 24)    //   小时
      h = h < 10 ? '0' + h : h
      let m = parseInt(count / 60 % 60)          //   分数
      m = m < 10 ? '0' + m : m
      let s = parseInt(count % 60);                //    秒数
      s = s < 10 ? '0' + s : s

      hour.innerHTML = h
      minutes.innerHTML = m
      scond.innerHTML = s
        }
    </script>

</body>

缓动动画animate.js

查看代码

<script>
    //timer是全局变量
    var timer=null;
    //animate(谁动,目标位置,回调函数)
    function animate(obj,target,callback)
    {
        //每次开始前先清除之前的定时器,防止多次点击造成加速
        clearInterval(timer);
        obj.timer = setInterval(function(){
            // 步长取整
            var step = (target - obj.offsetLeft) / 10;
            step = step > 0 ? Math.ceil(step) : Math.floor(step);
            if(obj.offsetLeft == target)
            {
                // 停止计时器 停止动画
                clearInterval(obj.timer);
                // 回调函数在定时器结束里面
                if (callback) {
                    callback();
                }
            }
            //缓动
            obj.style.left = obj.offsetLeft + step + "px";
        },15)
    }
</script>

4.普通冒泡排序

查看代码

function bubbling(arr, isBigSmall) { // arr 数组 , isBigSmall 是否从大到小排练
    let num = arr.length
    for (let i = 0; i < num; i++) {
        for (let j = 0; j < num; j++) {
            if (arr[j] > arr[j + 1]) {
                let numNumber = arr[j]
                arr[j] = arr[j + 1]
                arr[j + 1] = numNumber
            }
        }
    }
    if (isBigSmall || isBigSmall === true) { //从大到小排练
        arr = arr.reverse()
    }
    return arr // 默认从小到大
}

快速排序

查看代码

function rapidSort(arr, isBigSmall) { // arr 数组 , isBigSmall 是否从大到小排练
    let left = []
    let right = []
    let center = []
    let arrLength = arr.length
    for (let i = 0; i < arrLength; i++) {
        if (arr[i] === arr[0]) {
            center.push(arr[i])
        } else if (arr[i] > arr[0]) {
            right.push(arr[i])
        } else {
            left.push(arr[i])
        }
    }//将数组分为3部分, 同时进行排练,最后合并
    let leftnew = bubblingSortList(left)
    let rightnew = bubblingSortList(right)
    let newArr = leftnew.concat(center, rightnew)
    if (isBigSmall || isBigSmall === true) { //从大到小排练
        newArr = newArr.reverse()
    }
    return newArr
}
function bubblingSortList(index) {
    let arrLength = index.length
    for (let i = 0; i < arrLength; i++) {
        for (let j = 0; j < arrLength; j++) {
            if (index[j] > index[j + 1]) {
                let num = index[j]
                index[j] = index[j + 1]
                index[j + 1] = num
            }
        }
    }
    return index
}

数组去重ES5

查看代码

function outRepetitionES5(arr) {
    let newArr = []
    for (let i = 0; i < arr.length; i++) {
        if (newArr.indexOf(arr[i]) == -1) {
            newArr.push(arr[i])
        }
    }
    return newArr
}

数组去重ES6

查看代码

function outRepetitionES6(arr) {
    return [...new Set(arr)]
}

去除连续字符串

查看代码

//函数 
function uniq(str) {
    return str.replace(/(\w)\1+/g, '$1')
}
//调用示例
let str = uniq('ijsisiiiisaajjdain')
console.log(str);

范围随机数

查看代码

function randomFun(min, max, arrLength) { // min 随机数最小范围 ,ma随机数最大范围 arrLength[可选参数] 是否以数组的形式返回多个
    if (arrLength) { // 没有长度返回单个随机数
        singleRandomFun(min, max)
    } else { // 返回一个指定长度的数组,每一个都是随机数
        let arr = []
        for (let i = 0; i < arrLength;i++) {
            arr.push(singleRandomFun(min, max))
        }
        return arr
    }
}
//获取单个随机数
function singleRandomFun(min, max) {
    return Math.floor(Math.random() * (max - min))
}

生成指定位数验证码

查看代码

//1. 封装函数
function specifiedYZM(numNumber, isLetter) { // 验证码长度[numNumber] 是否有字母[isLetter] 
    if (numNumber) {
        let arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
        let arr2 = '1234567890qwertyuiopasdfghjklzxcvbnm'
        arr2 = arr2.split('')
        let arr = ''
        let arrLength = ''
        let tar = []
        if (isLetter) {
            arr = arr2
            arrLength = arr2.length
        } else {
            arr = arr1
            arrLength = arr1.length
        }
        for (let i = 0; i < numNumber; i++) {
            tar.push(arr[Math.floor(Math.random() * arrLength)])
        }
        tar = tar.join('')
        return tar
    } else {
        return '验证码长度不可为空'
    }
}

//2. 调用示例
let yanzhengma = specifiedYZM(4, true)
console.log(yanzhengma);

密码强度

查看代码

//封装
function passStrength(stringText) { //[stringText]密码形参
    var passLv
    if (stringText.length >= 6) {
        if (/[0-9]/.test(stringText)) {
            passLv = '弱'
        }
        if (/[a-z]/.test(stringText)) {
            passLv = '中'
        }
        if (/[A-Z]/.test(stringText)) {
            passLv = '较强'
        }
        if (/[\.|-|_]/.test(stringText)) {
            passLv = '很强'
        }
    }else{
        passLv = '请输入6位数以上密码'
    }
    return passLv
}

//调用示例
let pStrength = passStrength('12356')
console.log(pStrength);

 邮箱验证正则表达式

查看代码

function isAvailableEmail(sEmail) {
    var reg = /^([\w+\.])+@\w+([.]\w+)+$/
    return reg.test(sEmail)
}

 

posted @ 2022-03-27 20:32  RHCHIK  阅读(55)  评论(0编辑  收藏  举报