JavaScritp前端开发常用的功能函数收纳

简述

使用JavaScript语言可以开发多平台前端工作,当工作积累到一定程度,我收纳了一下一些函数,

是任何项目都可能会用到的,记录在此,希望也对同行有一些帮助。

判断是否同一天

function(timeStampA , timeStampB){
    let dateA = new Date(timeStampA);
    let dateB = new Date(timeStampB);
    return (dateA.setHours(0, 0, 0, 0) == dateB.setHours(0, 0, 0, 0));
}

从数组中删除某个值,并返回结果数组,不影响原数组

function(arr , val){
   let _arr = [];
    arr.forEach(_val => {
        if (_val !== val) {
            _arr.push(_val)
        }
    });
    return _arr;
}

数组去重

function(targetArr){
   var resultArr = [];
    var _indexArr = [];
    var l = targetArr.length;
    for (var i = 0; i < l; i++) {
        for (var j = i + 1; j < l; j++) {
            if (targetArr[i] === targetArr[j]) {
                i++;
                j = i;
            }
        }
        resultArr.push(targetArr[i]);
        _indexArr.push(i);
    }
    return resultArr;
}

获取随机整数

function(startNum,EndNum){
   var num = Math.round(Math.random() * (EndNum - startNum) + startNum).toString();
    return Number(parseInt(num));
}

防止频繁触发某个事件函数

function(obj,handler,times,...params){
   if (handler._clickTime && new Date().getTime() - handler._clickTime < times * 1000) {
            return;
    }
    handler._clickTime = new Date().getTime();
    handler.call(obj, ...params);
}

根据16进制色彩 得到rgb值

function(hexColor) {
    const hex = hexColor.replace(/^#?/, "0x");
    const c = parseInt(hex);
    const r = c >> 16;
    const g = (65280 & c) >> 8;
    const b = 255 & c;
    return [r, g, b];
}

二分法查找递增表中最接近的数

/**
    * @return 数组下标 成功  -1 失败
    * @pstArray 数组
    * @ullTime 目标
    * @tag 目标对比元素
*/
function(pstArray, ullTime, tag) {
    var index = 0; // 保存最接近数值在数组中的索引
    var d_value = Number.MAX_VALUE; // 保存差值绝对值,默认为最大数值
    for (var i = 0; i < pstArray.length; i++) {
        var new_d_value = Math.abs(pstArray[i][tag] - ullTime[tag]); // 新差值
        if (new_d_value <= d_value) { // 如果新差值绝对值小于等于旧差值绝对值,保存新差值绝对值和索引
            if (new_d_value === d_value && pstArray[i][tag] < pstArray[index][tag]) { // 如果数组中两个数值跟目标数值差值一样,取大
                continue;
            }
            index = i;
            d_value = new_d_value;
        }
    }
    return index // 返回最接近的数值
}

版本号大小比较

compareVersion(v1, v2) {
        if (!v1 && wx) { // 支持微信平台自找版本处理
            let info = wx.getSystemInfoSync();
            if (!info) {
                return false;
            } else {
                v1 = info.version;
            }
        }
        v1 = v1.split('.')
        v2 = v2.split('.')
        const len = Math.max(v1.length, v2.length)

        while (v1.length < len) {
            v1.push('0')
        }
        while (v2.length < len) {
            v2.push('0')
        }

        for (let i = 0; i < len; i++) {
            const num1 = parseInt(v1[i])
            const num2 = parseInt(v2[i])

            if (num1 > num2) {
                return true
            } else if (num1 < num2) {
                return false
            }
        }
        return false
    }
    

持续更新中……

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值