JavaScript | 常用工具类(持续更新中......)


项目应用-javaScript-封装工具类

数组去重

const uniqueArr = (arr) => [...new Set(arr)];

两日期之间相差的天数

const dayDiff = (date1, date2) => Math.ceil(Math.abs(date1.getTime() - date2.getTime()) / 86400000);

dayDiff(new Date("2021-10-21"), new Date("2022-02-12"))
// Result: 114

根据日期分类(年-月-日)

/**
* arr Arrary 原数组
* type String 根据分组的字段
**/
export function catgoryYearMonthDay(arr, type) {
	// 假如数据是你想要的,忽略此步骤
    arr.forEach(item => {
        item.catgoryTime = item[type].slice(0, 10)
    })
    let newArr = []
    arr.forEach((item, i) => {
        let index = -1
        let isExists = newArr.some((newItem, j) => {
            if (item.catgoryTime == newItem.catgoryTime) {
                index = j;
                return true;
            }
        })
        if (!isExists) {
            newArr.push({
                catgoryTime: item.catgoryTime,
                subList: [item]
            })
        } else {
            newArr[index].subList.push(item);
        }
    });
    return newArr;
}

数字转字符

export function formatNumber(n) {
    const str = n.toString()
    return str[1] ? str : `0${str}`
}

判断是否包含特殊符号 含有特殊字符包括空格返回 true

export function isCharacters(val) {
    if (val.match(/^[a-zA-Z0-9\u4e00-\u9fa5]+$/g)) {
        return false;
    } else {
        return true
    }

};

判断是否包含表情

export function isEmoji(substring) {
    for (var i = 0; i < substring.length; i++) {
        var hs = substring.charCodeAt(i);
        if (0xd800 <= hs && hs <= 0xdbff) {
            if (substring.length > 1) {
                var ls = substring.charCodeAt(i + 1);
                var uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
                if (0x1d000 <= uc && uc <= 0x1f77f) {
                    return true;
                }
            }
        } else if (substring.length > 1) {
            var ls = substring.charCodeAt(i + 1);
            if (ls == 0x20e3) {
                return true;
            }
        } else {
            if (0x2100 <= hs && hs <= 0x27ff) {
                return true;
            } else if (0x2B05 <= hs && hs <= 0x2b07) {
                return true;
            } else if (0x2934 <= hs && hs <= 0x2935) {
                return true;
            } else if (0x3297 <= hs && hs <= 0x3299) {
                return true;
            } else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 ||
                hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b ||
                hs == 0x2b50) {
                return true;
            }
        }
    }
}

判断手机号是否正确

export function testPhone(phone) {
    let phoneReg = /(^1[3|4|5|6|7|8|9]\d{9}$)|(^09\d{8}$)/;
    return phoneReg.test(phone);
}

判断邮箱

export function testEmail(email) {
    var reg = new RegExp("^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$");
    return reg.test(email);
}

判断身份证

export function idCardCheck(idNo) {
    var regIdNo = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
    if (!regIdNo.test(idNo)) {
        return false;
    } else {
        return true;
    }
}

两个数组求差

export function diff(arr1, arr2) {
    var newArr = [];
    var arr3 = [];
    for (var i = 0; i < arr1.length; i++) {
        if (arr2.indexOf(arr1[i]) === -1)
            arr3.push(arr1[i]);
    }
    var arr4 = [];
    for (var j = 0; j < arr2.length; j++) {
        if (arr1.indexOf(arr2[j]) === -1)
            arr4.push(arr2[j]);
    }
    newArr = arr3.concat(arr4);
    return newArr;
}

计算评分(多少星星)

export function starNum(num) {
    let fill = [];
    let half = [];
    let empty = [];

    let fillNum = parseInt(num);
    let halfNum = 0;
    if (num % 1) halfNum = 1;
    let emptyNum = 5 - fillNum - halfNum;

    for (let i = 0; i < fillNum; i++) {
        fill.push(1);
    }
    for (let i = 0; i < halfNum; i++) {
        half.push(1);
    }
    for (let i = 0; i < emptyNum; i++) {
        empty.push(1);
    }

    let obj = {
        fill: fill,
        half: half,
        empty: empty
    }
    return obj;
}

根据经纬度计算两地之差

export function distance(la1, lo1, la2, lo2) {
    var La1 = la1 * Math.PI / 180.0;
    var La2 = la2 * Math.PI / 180.0;
    var La3 = La1 - La2;
    var Lb3 = lo1 * Math.PI / 180.0 - lo2 * Math.PI / 180.0;
    var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(La3 / 2), 2) + Math.cos(La1) * Math.cos(La2) * Math.pow(Math.sin(Lb3 / 2), 2)));
    s = s * 6378.137;
    s = Math.round(s * 10000) / 10000;
    s = s.toFixed(2);
    return s;
}

判断环境(web-view)

export function isMiniProgram() {
    var ua = navigator.userAgent.toLowerCase()
    var envType = '#'

    if (ua.match(/MicroMessenge/i) == 'micromessenger') {
        wx.miniProgram.getEnv(function(res) {
            if (res.miniProgram) { // 小程序环境下逻辑
                envType = true
            } else { // 非小程序环境下逻辑
                envType = false
            }
        })
    } else { // 非微信环境逻辑
        envType = false
    }
    return envType
}

格式时间

export function formatDate(date, fmt) {
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
  }
  const o = {
    'M+': date.getMonth() + 1,
    'd+': date.getDate(),
    'h+': date.getHours(),
    'm+': date.getMinutes(),
    's+': date.getSeconds()
  }
  for (const k in o) {
    if (new RegExp(`(${k})`).test(fmt)) {
      const str = o[k] + ''
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str))
    }
  }
  return fmt
}

function padLeftZero(str) {
  return ('00' + str).substr(str.length)
}

使用中

 filters: {
   formatDate(time) {
     const date = new Date(time)
    return formatDate(date, 'yyyy-MM-dd hh:mm')
   }
 },

{{ item | formatDate}}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值