• 前端常用utils方法持续更新中


    1.数字太长截断显示

    在data上方定义一个filter 在template中{{value | ellipsis}}

      filters: {
        ellipsis(value) {
          if (!value) return ''
          if (value.length > 8) {
            return value.slice(0, 8) + '...'
          }
          return value
        }
      },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2.根据数据值动态更改表格样式

    :cell-style=“changeCellStyle” 利用column上的label,以及property, row[column.property]拿到单元格数值、

     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
      changeCellStyle({ row, column, rowIndex, columnIndex }) {
          if (column.label === '') {
            column.width = 120
            return 'text-align:left;'
          }
          if (
            column.property !== 'name' &&
            column.property !== 'yesterday' &&
            column.property !== 'mtd' &&
            column.label !== ''
          ) {
            let textcolor = '#26A872'
            if (
              row[column.property] !== null &&
              row[column.property].includes('%') &&
              row[column.property].includes('-')
            ) {
              textcolor = '#ea4025'
              return `color:${textcolor};text-align:right;`
            }
            return `color:${textcolor};text-align:right;`
          }
          return 'text-align:right;'
        },
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    3.dayjs库 处理日期

    import dayjs from 'dayjs'
    
    // 获取昨天日期
    export function getYesterday() {
      const yesterday = dayjs().subtract(1, 'day')
      const formatYesterday = dayjs(yesterday).format('YYYY-MM-DD')
      return formatYesterday
    }
    // 获取上个月第一天日期
    export function getLasterMonthFirstDay() {
      const LasterMonthDay = dayjs().subtract(1, 'month')
      const lastermonthfirstday = dayjs(LasterMonthDay).startOf('M')
      const formatlastermonthday = dayjs(lastermonthfirstday).format('YYYY-MM-DD')
      return formatlastermonthday
    }
    
    // 获取今天日期
    export function getTodayFormat() {
      return dayjs().format('YYYY-MM-DD')
    }
    
    // 是否是15号之后
    export function isAfterFifteenDay() {
      return dayjs().date() > 15
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    4.数字处理

    // 将数字以万为单位保留一位小数
    export function formateThousand(num:number) {
      num = Number(num)
      if (!num) return '--'
      if (num === 0) {
        return `${num}`
      } if (num > 1 && num < 10000) {
        return `${num}`
      }
      return `${(num / 10000).toFixed(1)}`
    }
    
    export function addPrecent(num:number) {
      num = Number(num)
      if (!num) return '--'
      return `${(num)}%`
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    5.利用set做去重

          const keyList = new Set()
          this.data.nodeList.forEach(item => {
            keyList.add(item.monitorKey)// 用add增加数据
          })
          console.log(keyList.size - 1)//长度使用size而非length
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    6.对象数组根据某个key值去重

    /*
    arr:对象数组
    uniId :某个key
    */
      uniqueObjArr(arr, uniId) {
        const res = new Map()
        return arr.filter((item) => !res.has(item[uniId]) && res.set(item[uniId], 1))
      },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    7.随机数生成

    /* 生成随机数 */
      curDateTime() {
        var d = new Date()
        var year = d.getFullYear() + ''
        var month = d.getMonth() + 1
        var date = d.getDate()
        var day = d.getDay()
        var Hours = d.getHours() // 获取当前小时数(0-23)
        var Minutes = d.getMinutes() // 获取当前分钟数(0-59)
        var Seconds = d.getSeconds() // 获取当前秒数(0-59)
        var curDateTime = year
        if (month > 9) {
          curDateTime = curDateTime + month
        } else {
          curDateTime = curDateTime + '0' + month
        }
        if (date > 9) { curDateTime = curDateTime + date } else { curDateTime = curDateTime + '0' + date }
        if (Hours > 9) { curDateTime = curDateTime + Hours } else { curDateTime = curDateTime + '0' + Hours }
        if (Minutes > 9) { curDateTime = curDateTime + Minutes } else { curDateTime = curDateTime + '0' + Minutes }
        if (Seconds > 9) { curDateTime = curDateTime + Seconds } else { curDateTime = curDateTime + '0' + Seconds }
        return curDateTime
      },
    
      RndNum(n) {
        var rnd = ''
        for (var i = 0; i < n; i++) {
          rnd += Math.floor(Math.random() * 10)
        }
        return rnd
      },
      // 输出指定位数的随机数的随机整数
      getTimeAndRandom() {
        return this.curDateTime() + this.RndNum(4)
      },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    8.大数相加

      /**
         * js 实现一个函数,完成超过范围的两个大整数相加功能
         * @param {*} number1
         * @param {*} number2
         */
        bigNumberAdd(number1,number2) {
          // start
          let result = '' // 保存最后结果
          let carry = false // 保留进位结果
    
          // 将字符串转换为数组
          number1 = number1.split('')
          number2 = number2.split('')
    
          // 当数组的长度都变为0,并且最终不再进位时,结束循环
          while (number1.length || number2.length || carry) {
            // 每次将最后的数字进行相加,使用~~的好处是,即使返回值为 undefined 也能转换为 0
            carry += ~~number1.pop() + ~~number2.pop()
    
            // 取加法结果的个位加入最终结果
            result = carry % 10 + result
    
            // 判断是否需要进位,true 和 false 的值在加法中会被转换为 1 和 0
            carry = carry > 9
          }
    
          // 返回最终结果
          return result
        },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    9.向url中添加参数

    /**
     * Add the object as a parameter to the URL
     * @param baseUrl url
     * @param obj
     * @returns {string}
     * eg:
     *  let obj = {a: '3', b: '4'}
     *  setObjToUrlParams('www.baidu.com', obj)
     *  ==>www.baidu.com?a=3&b=4
     */
    
    export function setObjToUrlParams1(baseURL:string, obj:any):string {
      let parameters = '';
      for(const key in obj) {
        parameters +=key + '=' + encodeURIComponent(obj[key]) + '&';
      }
      return /\?$/.test(baseURL) ? baseURL + parameters : baseURL.replace(/\/?$/, '?') + parameters;
    }
    // 1. /\?$/:这个正则表达式用于检查 baseURL 是否以问号(?)结尾。其中,\? 表示问号,$ 表示字符串的末尾。所以,/\?$/ 匹配以问号结尾的字符串。
    
    // 2. /\/?$/:这个正则表达式用于在 baseURL 的末尾添加一个问号。其中,\/ 表示斜线,? 表示前面的字符(这里是斜线)可以出现也可以不出现,$ 表示字符串的末尾。所以,/\/?$/ 匹配以斜线或无字符结尾的字符串。在这个正则表达式中,replace 函数将匹配的部分(无论是斜线还是无字符)替换为问号。
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
  • 相关阅读:
    pytorch笔记:自动混合精度(AMP)
    快速排序(递归和非递归两种方法实现)
    【Python】time模块以及应用
    .net core框架
    字符设备驱动_1:基本概念和数据结构
    Web大学生网页作业成品 :黑色主题个人博客网站设计与实现(HTML+CSS+JavaScript)
    (十九)数据结构-图的应用-有向无环图表达形式、拓扑排序、关键路径
    深度剖析NIKE Web3平台:为什么Web3对品牌很重要?
    Java集成腾讯云OCR身份证识别接口
    【第27天】给定一个整数 n ,打印出1到n的全排列 | 全排列模板
  • 原文地址:https://blog.csdn.net/weixin_44717486/article/details/134513671