Skip to content

util工具类

util工具类路径'src/assets/js/util';

trim(字符串去空格)

javascript
import util from '@/assets/js/util';

let txt = ' 北京博思 财信网络科技有限公司 ';
console.log(util.trim(txt));
// 输出 '北京博思财信网络科技有限公司'

reverseString(字符串反转)

javascript
import util from '@/assets/js/util';

let txt = '北京博思财信';
console.log(util.reverseString(txt));
// 输出 '信财思博京北'

findManyIndex (获取一个字符在字符串中第几次出现的索引(num从0开始,第一次传0))

javascript
import util from '@/assets/js/util';

// 原数组
let array = ['a', 'b', 'c', 'a', 'd', 'b', 'e'];
// 查找的值
let value = 'b';
// 第几次出现
let num = 0;
console.log(util.findManyIndex(array, value, num));
// 输出 1

toNumber(转换成数字类型)

javascript
import util from '@/assets/js/util';

let value = '10';
console.log(util.toNumber(value));
// 输出 10

getHashCode(获取HashCode)

javascript
import util from '@/assets/js/util';

let value = {name: '北京博思财信网络科技有限公司'};
console.log(util.getHashCode(JSON.stringify(value)));

isEmpty(判断是否为空)

javascript
import util from '@/assets/js/util';

//判断是否是空字符串
let value1 = '';
console.log(util.isEmpty(value1));
// 输出 true

//判断是否是null
let value2 = null;
console.log(util.isEmpty(value2));
// 输出 true

//判断是否是undefined
let value3 = undefined;
console.log(util.isEmpty(value3));
// 输出 true

// 判断是否是NaN
let value4 = NaN;
console.log(util.isEmpty(value4));
// 输出 true

// 判断是否是空数组
let value5 = [];
console.log(util.isEmpty(value5));
// 输出 true

isNotEmpty(判断是否不为空)

javascript
import util from '@/assets/js/util';

//判断是否不是空字符串
let value1 = '';
console.log(util.isNotEmpty(value1));
// 输出 false

//判断是否不是null
let value2 = null;
console.log(util.isNotEmpty(value2));
// 输出 false

//判断是否不是undefined
let value3 = undefined;
console.log(util.isNotEmpty(value3));
// 输出 false

// 判断是否不是NaN
let value4 = NaN;
console.log(util.isNotEmpty(value4));
// 输出 false

// 判断是否不是空数组
let value5 = [];
console.log(util.isNotEmpty(value5));
// 输出 false

isEmptyObject(判断是否是空对象)

javascript
import util from '@/assets/js/util';

let value = {};
console.log(util.isEmptyObject(value));
// 输出 true

isNotEmptyObject(判断是否不是空对象)

javascript
import util from '@/assets/js/util';

let value = {
  a: 1,
  b: 2
};
console.log(util.isNotEmptyObject(value));
// 输出 true

everyEmpty(判断是否全部为空)

javascript
import util from '@/assets/js/util';

let value = ['', null, undefined, []];
console.log(util.everyEmpty(value));
// 输出 true

everyNotEmpty(判断是否全部不为空)

javascript
import util from '@/assets/js/util';

let value = ['', null, undefined, []];
console.log(util.everyNotEmpty(value));
// 输出 false

someEmpty(判断是否有一个为空)

javascript
import util from '@/assets/js/util';

let value = [[1,2,3], null, {a:1}, {b:2}];
console.log(util.someEmpty(value));
// 输出 true

someNotEmpty(判断是否有一个不为空)

javascript
import util from '@/assets/js/util';

let value = ['', null, undefined, [], [1,2,3]];
console.log(util.someNotEmpty(value));
// 输出 true

includeAll(判断一个集合(数组)是否包含另一个集合(数组)的所有元素)

javascript
import util from '@/assets/js/util';

let allArray = [1,2,3,4,5];
let subArray = [2,3,4];
console.log(util.includeAll(allArray, subArray));
// 输出 true

floatEqual(浮点数比较)

  • 涉及到浮点数的比较是否相等,必须使用此方法
javascript
import util from '@/assets/js/util';

let value = 0.1 + 0.2;
let other = 0.3;
console.log(util.floatEqual(value, other));
// 输出 true

copyProperties(复制属性方法)

javascript
import util from '@/assets/js/util';

let target = {a: 1, b: 2, c: 3};
let source = {a: 2, b: 3, c: 4, d: 5, e: 6};
util.copyProperties(target, source)
console.log(target);
// 输出 {a: 2, b: 3, c: 4};

freezeDeep(深度冻结对象)

  • 使用场景:数据量大结构复杂的只读对象,一般为解决页面性能问题,在请求完数据之后,赋值给页面状态数据之前,可以进行冻结。
javascript
import util from '@/assets/js/util';

let target = {a: 1, b: 2, c: 3: d: {a: 2, b: 3, c: 4, d: 5, e: 6}};
util.freezeDeep(target, source)

scrollTop(设置垂直滚动高度)

vue
<template>
  <!-- 滚动区域 -->
  <div ref="main"></div>
</template>
<script>
import util from '@/assets/js/util';

export default {
  methods: {
    /**
     * 使目标区域滚动至垂直滚动高度300
     */
    scroll() {
      let el = this.$refs.main;
      util.scrollTop(el, el.scrollTop, 300);
    }
  },
  mounted() {
    this.scroll();
  },
};
</script>

addEvent(添加事件绑定)

vue
<template>
  <!-- 滚动区域 -->
  <div ref="main"></div>
</template>
<script>
import util from '@/assets/js/util';

export default {
  methods: {
    /**
     * 处理滚动区域滚动
     */
    onScroll(event) {
    	console.log('onScroll', event);
    }
  },
  mounted() {
    // 添加事件绑定
    let el = this.$refs.main;
    util.addEvent(el, 'scroll', this.onScroll);
  },
};
</script>

removeEvent(移除事件绑定)

vue
<template>
  <!-- 滚动区域 -->
  <div ref="main"></div>
</template>
<script>
import util from '@/assets/js/util';

export default {
  methods: {
    /**
     * 处理滚动区域滚动
     */
    onScroll(event) {
    	console.log('onScroll', event);
    }
  },
  beforeDestroy() {
    // 删除事件绑定
    let el = this.$refs.main;
    util.removeEvent(el, 'scroll', this.onScroll);
  },
};
</script>

getEventPath(获取事件冒泡路径,兼容ie11,edge,chrome,firefox,safari)

vue
<template>
  <!-- 获取事件冒泡路径 -->
  <button @click="onClick">获取事件冒泡路径</button>
</template>
<script>
import util from '@/assets/js/util';

export default {
  methods: {
    /**
     * 处理点击
     * 1、获取事件冒泡路径
     */
    onClick(event) {
      let eventPath = util.getEventPath(event);
    	console.log('eventPath', eventPath);
    }
  },
};
</script>

getEvent(获取event事件对象)

vue
<template>
  <!-- 获取事件对象 -->
  <button @click="onClick">获取事件对象</button>
</template>
<script>
import util from '@/assets/js/util';

export default {
  methods: {
    /**
     * 处理点击
     * 1、获取事件对象
     */
    onClick(event) {
      event = util.getEvent(event);
    	console.log('event', event);
    }
  },
};
</script>

getTarget(获取事件来源)

vue
<template>
  <!-- 获取事件来源 -->
  <button @click="onClick">获取事件来源</button>
</template>
<script>
import util from '@/assets/js/util';

export default {
  methods: {
    /**
     * 处理点击
     * 1、获取事件来源
     */
    onClick(event) {
      let eventTarget = util.getTarget(event);
    	console.log('eventTarget', eventTarget);
    }
  },
};
</script>

preventDefault(阻止默认行为)

vue
<template>
  <!-- 阻止默认行为 -->
  <button @click="onClick">阻止默认行为</button>
</template>
<script>
import util from '@/assets/js/util';

export default {
  methods: {
    /**
     * 处理点击
     * 1、阻止默认行为
     */
    onClick(event) {
      util.preventDefault(event);
    }
  },
};
</script>

stopPropagation(阻止事件传播)

vue
<template>
  <!-- 阻止事件传播 -->
  <button @click="onClick">阻止事件传播</button>
</template>
<script>
import util from '@/assets/js/util';

export default {
  methods: {
    /**
     * 处理点击
     * 1、阻止事件传播
     */
    onClick(event) {
      util.stopPropagation(event);
    }
  },
};
</script>

download(下载文件)

vue
<template>
  <!-- 下载文件 -->
  <button @click="onClick">下载文件</button>
</template>
<script>
import util from '@/assets/js/util';

export default {
  methods: {
    /**
     * 处理点击
     * 1、下载文件
     */
    onClick(event) {
      let url = 'http://xxxxxxx/xxx.pdf'
      util.download(url);
    }
  },
};
</script>

getBrowser(获取浏览器信息)

javascript
import util from '@/assets/js/util';

console.log(util.getBrowser());
// 输出 {"navigator":{},"appVersion":"5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36","language":"zh-cn","versions":{"trident":false,"presto":false,"webKit":true,"gecko":false,"ie":false,"edge":false,"opera":false,"firefox":false,"safari":false,"chrome":true,"win":false,"mac":true,"mobile":false,"ios":false,"android":false,"iPhone":false,"iPad":false,"webApp":false,"weChat":false,"alipay":false,"weibo":false,"dingTalk":false,"govDingTalk":false,"qq":false,"operatingSystem":"mac"}}

getDateInfo(获取日期时间信息)

javascript
import util from '@/assets/js/util';

console.log(util.getDateInfo());
// 输出 {"date":"2023-08-29T11:41:57.075Z","year":2023,"month":8,"week":2,"day":29,"hours":19,"minutes":41,"seconds":57,"dateInfo":"2023-08-29","timeInfo":"19:41:57","dateTimeInfo":"2023-08-29 19:41:57","time":1693309317075}

getBasePath(获取应用URL路径)

javascript
import util from '@/assets/js/util';

console.log(util.getBasePath());
// 输出 http://localhost:3000

getContextPath(获取应用上下文路径)

javascript
import util from '@/assets/js/util';

console.log(util.getContextPath());
// 例如:http://localhost:3000/orange/#/index 输出 '/orange/'

getFileType(获取文件类型)

javascript
import util from '@/assets/js/util';

let pdfFile = 'file1.pdf';
console.log(util.getFileType(pdfFile));
// 输出 'PDF'

generateShortId(生成短Id)

javascript
import util from '@/assets/js/util';

console.log(util.generateShortId());
// 输出 2658006009

console.log(util.generateShortId(true));
// 输出 '2658006009'

generateUUID(生成UUID)

javascript
import util from '@/assets/js/util';

console.log(util.generateUUID());
// 输出 '906ea5d805954908878bf0507849145c'

generateGUID(生成GUID)

javascript
import util from '@/assets/js/util';

console.log(util.generateGUID());
// 输出 '1h90igekknfntjp11cn1g3euu60'

generateText(生成错误文本)

javascript
import util from '@/assets/js/util';

console.log(util.generateText('error.txt', '此处是错误信息'));

isJsonString(是否为Json字符串)

javascript
import util from '@/assets/js/util';

console.log(util.isJsonString('{"a":1,"b":2,"c":3,"d":4,"e":5}'));
// 输出 true

parseParams(拼接参数)

javascript
import util from '@/assets/js/util';

let url = 'http://192.168.2.123:3000';
let params = {
  a: 1,
  b: 2,
};
console.log(util.parseParams(url, params));
// 输出 'http://192.168.2.123:3000?a=1&b=2';

getUrlParams(获取url参数)

javascript
import util from '@/assets/js/util';

let url = 'http://192.168.2.123:3000?a=1&b=2';
console.log(util.getUrlParams(url));
// 输出 '{a: '1', b: '2'}';