数据处理和常用函数

数据处理

类型转换
!!用法
let object={key:undefined,value:undefined}
console.log(true==object)//false
console.log(false==object)//false
console.log(!object)//false
console.log(!!object)//true
~~用法
去掉小数部分
+‘2’
字符串2转number2
数组扁平化
let arr = [1, [2, [3, 4]]]; 
console.log(arr.flat(Infinity)); // [1, 2, 3, 4,5]
三位一个逗号
for (let key in todayData.value){
    todayData.value[key] = new Intl.NumberFormat('en',{
        maximumFractionDigits:2,
    }).format(todayData.value[key])
}
时间格式化
http://momentjs.cn/docs/#/i18n/
http://www.javashuo.com/article/p-ddrrfroe-ed.html

import moment from 'moment'
moment(date).format('YYYY-MM-DD')

//格式化时间戳(以秒为单位)
moment().format('X')
//格式化时间戳(以毫秒为单位)
moment().format('x')
//是否以前(是否以后,在之间)
moment('2010-10-20').isBefore('2010-10-21'); // true  isAfter isBetween
数组去重排序
let data=['20214','20213','20222','20221','20221']
    let arr=[]
    for(let i=0;i<data.length;i++){
      arr.push(data[i])
    }
    arr=[...new Set(arr)]
    arr.sort((a,b)=>a-b)//升序
//排序对象的话arr.sort((a,b)=>a.属性-b.属性)
数组随机重排序
const shuffle = (arr) =>{
   return arr.sort(() => Math.random() - 0.5)
}
const arr = [1, 2, 3, 4, 5]
console.log(shuffle(arr))
随机颜色
const generateRandomHexColor=()=>{
	return `#${Math.floor(Math.random()*0xffffff).toString(16)}`
}
console.log(generateRandomHexColor())
复制到剪切板
const copyToClipboard = (text)=>{
	return navigator.clipboard && navigator.clipboard.writeText && navigator.clipboard.writeText(text)
}
copyToClipboard("hello world")
获取选中文本
const getSelectedText = () => window.getSelection().toString();
parseFloat的注意点

parseFloat(“”)返回NaN,

parseFloat(1.11).toFixed(2)返回的是string

Math.floor(parseFloat(1.11)*100)/100 返回的是number //round 四舍五入

深拷贝

Json大部分情况都可以使用,不行的情况可以使用lodash

let data = JSON.parse(JSON.stringify(this.form));

let deep = _.cloneDeep(objects);

let myDeepCopy=structuredClone(myOriginal)

Blob对象转String字符串
let blob= new Blob['字符串'],{type:'text/plain'}//new blob第一个参数是对象数组,Blob/ArrayBuffer/ArrayBufferView/
let reader =new FileReader()
reader.readAsText(blob,'utf-8')
reader.onload=()=>{
	console.log(reader.result)
}
转ABCD

String.fromCharCode( index+ 65)

获取随机字符串
const charStr = 'abacdefghjklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789'
let RandomIndex = (min, max, i) => {
    let index = Math.floor(Math.random() * (max - min + 1) + min),
        numStart = charStr.length - 10;
    //如果字符串第一位是数字,则递归重新获取
    if (i == 0 && index >= numStart) {
        index = RandomIndex(min, max, i);
    }
    //返回最终索引值
    return index;
}

export default (len) => {
    let min = 0, max = charStr.length - 1, _str = '';
    //判断是否指定长度,否则默认长度为16
    len = len || 16;
    for (var i = 0, index; i < len; i++) {
        index = RandomIndex(min, max, i);
        _str += charStr[index];
    }
    return _str;
}
formData 传递文件参数
let data = new FormData()
let file = new File([u8arr],filename,{type:'image/png'})
data.append("file", file)
ajax.api(data).then(()=>{})

自定义函数

获取类型
export const getObjType = obj => {
  var toString = Object.prototype.toString;
  var map = {
    '[object Boolean]': 'boolean',
    '[object Number]': 'number',
    '[object String]': 'string',
    '[object Function]': 'function',
    '[object Array]': 'array',
    '[object Date]': 'date',
    '[object RegExp]': 'regExp',
    '[object Undefined]': 'undefined',
    '[object Null]': 'null',
    '[object Object]': 'object'
  };
  if (obj instanceof Element) {
    return 'element';
  }
  return map[toString.call(obj)];
};
url添加参数
export const addParam = (params) => {
  let result = [];
  for (let key in params) {
    result.push(`${key}=${params[key]}`)
  }
  if (result.length == 0) return ''
  return `?${result.join('&')}`
};
:params是参数对象 url=url+addParam(params)

获取url参数
export const getUrlParams = (url) => {
  let result = {
    url: '',
    params: {}
  };
  let list = url.split('?');
  result.url = list[0];
  let params = list[1];
  if (params) {
    let list = params.split('&');
    list.forEach(ele => {
      let dic = ele.split('=');
      let label = dic[0];
      let value = dic[1];
      result.params[label] = value;
    });
  }
  return result;
};
  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值