js 常用的工具

1. // 判断是否含有汉字

export const hasChinese = (str) => {

const reg = /[\u4E00-\u9FA5]/g;

return reg.test(str);

};

2. // 判断是否为数字

export const isNumber = (str) => {

const reg = /^(-?\d+)(\.\d+)?$/;

return reg.test(str);

};

3. 判断是不是闰年

function isRunyear(year){ //判断是不是闰年

var flag = false;

if (year%4 == 0 && year%100 !=0 || year%400 == 0){

flag = true;

}

return flag;

}

4. 数组相同元素累加 

  const sameKeySummataion = (arr, matchKey) => {

        let obj = {}

        arr.forEach((item) => {

            for (let key in item) {

                if (matchKey.indexOf(key) !== -1) {

                    let value = item[key]

                    if (isNumber(value)) {

                        key in obj ? (obj[key] += Number(value)) : (obj[key] = Number(value))

                    }

                }

            }

        })

        // 这一步可省略  这里为了保留最终数据都包含两位小数点

        for (var i in obj) {

            obj[i] = obj[i].toFixed(2)

        }

        return obj

    }

4.根据某个相同的值 合并组成新的数组

// data 是原数组

sameValueConcat(data) {

let dataInfo = {}

data.forEach((item, index) => {

let { cityname } = item

if (!dataInfo[cityname ]) {

dataInfo[cityname] = {

cityname ,

children: [],

}

}

dataInfo[cityname].children[] = item

})

let list = Object.values(dataInfo)

return list

},

原数组

arr = [

{cityname: "上海市", area: "松江区", areaId: 123 },

{cityname: "上海市", area: "静安区", areaId: 456 },

{cityname: "上海市", area: "闵行区", areaId: 789 },

{cityname: "武汉市", area: "洪山区", areaId: 321 },

{cityname: "武汉市", area: "江夏区", areaId: 654 },

{cityname: "武汉市", area: "武昌区", areaId: 987 },

]

转换成的新数组

newData=[

{

cityname: "上海市",

children: [

{area: "松江区", areaId: 123 },

{area: "静安区", areaId: 456 },

{area: "闵行区", areaId: 789 },

],

},

{

cityname: "武汉市",

children: [

{area: "洪山区", areaId: 321 },

{area: "江夏区", areaId: 654 },

{area: "武昌区", areaId: 987 },

],

},

],

5.// 通用脱敏 后端返回的手机需要加星号

Desensitization(str, beginLen, endLen) {

    let len = str.length;

    let firstStr = str.substr(0, beginLen);

    let lastStr = str.substr(endLen);

    let middleStr = str.substring(beginLen, len - Math.abs(endLen)).replace(/[\s\S]/ig, '*');

    let finalStr = firstStr + middleStr + lastStr;

    return finalStr;

}

console.log(Desensitization('18212346789', 3, -4)) // 182****6789

6.// 将数组分成多少个小数组 arr是原数组 length是想分的长度

setDivison(arr,length){

  let index = 0
    
  let newArray = []

  while (index < arr.length) {

      newArray.push(arr.slice(index, (index += length)))

   }

  return newArray

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值