当前位置: 首页 > article >正文

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

1.数字太长截断显示

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

  filters: {
    ellipsis(value) {
      if (!value) return ''
      if (value.length > 8) {
        return value.slice(0, 8) + '...'
      }
      return value
    }
  },

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

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

 <template>
          <el-table
            fit
            :header-cell-style="getRowClass"
            :cell-style="changeCellStyle"
            height="350"
            :data="analysistabledata"
            style="width: 100%"
          >
            <el-table-column
              v-for="i in analysistabledatacolumn"
              :key="i.key"
              show-overflow-tooltip
              :prop="i[0]"
              :label="i[1]"
              width="86"
            ></el-table-column>
          </el-table>
</template>
  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;'
    },


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
}


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)}%`
}

5.利用set做去重

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

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))
  },

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)
  },

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
    },

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 函数将匹配的部分(无论是斜线还是无字符)替换为问号。


http://www.kler.cn/a/134911.html

相关文章:

  • gpu-V100显卡相关知识
  • arkUI:遍历数据数组动态渲染(forEach)
  • 常见的噪声模型+图像中噪声模型的估计+常见的滤波方法(C++)
  • NVIDIA NIM 简介
  • 扫雷游戏代码分享(c基础)
  • 网络安全-Linux基础(bash脚本)
  • 为什么同样是做测试,别人年薪30W+?我10k!!!
  • 采集淘宝天猫整店商品api(店铺列表、店铺所有商品)
  • Unity中 Start和Awake的区别
  • 医生ai数字人线上应用有效缓解了医疗资源不均的问题
  • buildadmin+tp8表格操作(7.1)表格的事件监听(el-table中的事件)
  • Arcgis js Api日常天坑问题3——加载geojson图层,元素无属性
  • rabbitMQ的direct模式的生产者与消费者使用案例
  • java list里面根据条件查找某个元素的下标
  • Linux入门攻坚——6、磁盘管理——分区及文件系统管理
  • GOTS认证资讯-7.0版关于环境准则的要求
  • 京东API接口获取京东平台商品详情数据,SKU,价格参数及其返回值说明
  • 【Linux】20、进程状态:不可中断进程、iowait、僵尸进程、dstat strace pstree
  • Python-使用sqlite3模块
  • 广州华锐互动VRAR:VR教学楼地震模拟体验增强学生防震减灾意识
  • mac上配置maven
  • 十. Linux关机重启命令与Vim编辑的使用
  • 【如何让你的建筑设计更高效】推荐7个3DMAX建筑设计的实用插件
  • 11月20日星期一今日早报简报微语报早读
  • 远勤山丨品质第一 服务先行 扎扎实实打造让消费者满意的产品
  • Java版本+企业电子招投标系统源代码+支持二开+招投标系统+中小型企业采购供应商招投标平台