JavaScript
lt要努力
这个作者很懒,什么都没留下…
展开
-
vue 接口请求下载文件
在api文件中的接口定义:export function downLoadFile (q) { return axios({ url: '/file/downLoadFile', method: 'get', params: q, responseType: 'blob' }) }下载按钮的调用方法:down(id) { downLoadFile({id}).then(res => { let blob = new原创 2022-04-28 17:24:02 · 3572 阅读 · 0 评论 -
Object.keys() 返回值顺序
创建一个空的列表用于存放 keys将所有合法的数组索引按升序的顺序存入将所有字符串类型索引按属性创建时间以升序的顺序存入将所有 Symbol 类型索引按属性创建时间以升序的顺序存入返回 keys其中合法的数组索引 ,也即只有正整数才行,负数或者浮点数,一律当做字符串处理。严格来说对象属性没有数字类型的,无论是数字还是字符串,都会被当做字符串来处理。结合上面的规范,可以思考一下下面这段代码会输出什么:const testObj = {}testObj[-1] = ''testObj.原创 2022-01-25 09:39:17 · 783 阅读 · 0 评论 -
JavaScript数字精度丢失问题的处理
理论上用有限的空间来存储无限的小数是不可能保证精确的,但我们可以处理一下得到我们期望的结果当你拿到 1.4000000000000001 这样的数据要展示时,建议使用 toPrecision 凑整并parseFloat转成数字后再显示,如下:parseFloat(1.4000000000000001.toPrecision(12)) === 1.4 // True封装成方法就是:function strip(num, precision = 12) { return +parseFloat(原创 2021-07-28 15:05:12 · 256 阅读 · 0 评论 -
处理浮点数
常见的出现浮点数有以下这些情况:使用原生方法解决:parseFloat((0.1 + 0.2).toFixed(10))// 输出0.3原创 2021-06-23 16:28:05 · 236 阅读 · 0 评论 -
等待一段时间继续执行-- setTimeout
前言我的业务场景:地址组件从脚本那里拿接口数据,如果表单有两个地址组件,两个地址组件同时加载,以致于第二个组件拿不到数据。所以得每100毫秒调用获取数据的方法,等到第一个组件地址api请求完,然后就有数据返回了。正文promise来包装一下setTimeout()来实现一个sleep()const sleep = function (time) { return new Promise((resolve) => setTimeout(resolve, time))}地址组件数据返回原创 2021-06-22 16:29:12 · 530 阅读 · 0 评论 -
数组根据对象属性去重
let arrs = [{user: 1}, {user: 1}, {user: 1}, {user: 2}]let hash = {}arrs.filter(arr => hash[arr.user] ? false : hash[arr.user] = true)原创 2020-10-22 14:04:29 · 239 阅读 · 0 评论 -
手动触发滚动事件
解决因为监听滚动事件手动计算滚动距离影响其他效果事件(textare滚动事件也算在这里面从而影响了页面效果,需手动让页面滚动1px,避免影响。)let evt = document.createEvent('UIEvents')evt.initUIEvent('scroll', true, false, window, 1)window.dispatchEvent(evt)这段代码可在页面数据请求完后调用,可在上段代码加个定时器,定时器时间为0...原创 2020-10-22 10:33:17 · 1531 阅读 · 0 评论 -
关于数组的一切
数组的创建var arr = []; //创建一个空数组 语法糖var arr2 = new Array(); //使用构造函数创建一个空数组关联数组和索引数组索引数组:使用索引值对数组的元素进行编号关联数组:使用字符串作为数组的索引注:关联数组不计算长度(length:0) 无法使用for语句遍历,可以用for...in遍历// 关联数组var arr = []arr['name'] = '张三'arr['age'] = 20arr['sex'] = '男'Array.p原创 2020-08-12 15:21:54 · 121 阅读 · 0 评论 -
js技巧
对数组中的所有值求和我一开始想到的是使用一个循环,但是那样会很浪费。var numbers = [3, 5, 7, 2]var sum = numbers.reduce((x, y) => x + y)console.log(sum) // returns 17使用 length 调整数组大小可以调整大小或清空数组。var array = [11, 12, 13, 14, 15]console.log(array.length) // 5array.length = 3conso原创 2020-06-08 17:34:10 · 112 阅读 · 0 评论 -
console.log()打印引用类型,出现神奇事件
举个栗子????????????????????var obj = { age: 1}console.log(obj)obj.age = 2按正常的是输出为 { age: 1 }但:外层为1,展开却为2。consloe.log()一开始,在没有展开的时候是一个快照,在展开后,因为是引用类型,会再去根据指针找到对应地址,也就是最新的值。...原创 2020-06-04 16:18:18 · 700 阅读 · 0 评论 -
更好地使用JavaScript编写更好的条件语句
1. 数组方法 Array.includes项目中常常要判断值是否为空值,一般,我们会这么写if(value === '' || value === undefined || value === null){.....}使用 includes 后,简写为if(['', undefined, null].includes(value)){....}2. 使用对象属性代替switch一般地,我们习惯使用switch来写条件function printFruits(color) {原创 2020-05-28 15:00:30 · 162 阅读 · 0 评论 -
超简单的判断数组中是否有重复值
可以用到数组去重的new Set方法,使用去重方法后比较长度。function fn(arr){ let newSet = new Set(arr) if(arr.length !== newSet.size){ return '存在重复值' }else{ return 'okk' }}如果想要得到 去重后的数组,const newArr = Array.from(newSet)...原创 2020-05-21 15:05:29 · 2529 阅读 · 0 评论 -
parseInt转化很小的数的时候精度丢失问题
使用parseInt转换很小的数的时候,应该变成0的,结果变成了小数点后的非0数字然后之后 在数字后加了一个n,并要是字符串的哦,然后结果就正常了原创 2020-05-06 18:27:17 · 735 阅读 · 0 评论 -
给数组里的对象中的数组每一项添加一个属性,属性值为发送请求过后的值
这样的一个需求,下面export const productObj = [ { img: 'img1', data: [ { id: 1, text: '1' }, { id: 2, text: '2' }, { id: 3, text: '3'...原创 2020-04-30 17:44:34 · 3677 阅读 · 1 评论 -
一个数组除去另一个数组包含的,一行代码解决!
可结合数组的filter过滤方法以及some方法this.tableData = this.tableData.filter(item => !this.tableRightData.some(ele => ele.platformId === item.id))其中左边的 tableData 为你之后筛选出来的结果右边的 tableData 为总的数据tableRight...原创 2020-01-18 15:32:43 · 1333 阅读 · 0 评论 -
js之递归深拷贝
第一种方法function getType( obj ){ return Object.prototype.toString.call( obj ).slice( 8, -1 )}function deepCopy( obj ){ let result,newObj = getType( obj ) if(newObj == "Object"){ result = {} }els...原创 2019-11-16 11:08:39 · 257 阅读 · 0 评论 -
函数防抖与函数节流
浅析函数防抖与函数节流常见实用场景,有滚动加载、搜索框输入、窗口大小拖拽 Resize。函数防抖(debounce)函数防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间。简单的说,当一个动作连续触发,则只执行最后一次。举个栗子,坐公交,司机需要等最后一个人进入才能关门。每次进入一个人,司机就会多等待几秒再关门。电梯也是。可以...原创 2019-09-18 16:10:05 · 122 阅读 · 0 评论 -
this关键字的指向问题
this关键字的指向问题在函数中,指向调用该函数的对象在构造函数中,指向新的创建的对象在箭头函数中,指向父级对象this在原型中,指向调用的对象在全局环境中,指向window在严格模式下,不再指向windowthis在自执行函数中,指向window在计时器中,指向window在事件处理函数中,指向事件所绑定的对象...原创 2019-09-15 10:22:29 · 104 阅读 · 0 评论 -
JavaScript的数据类型
JavaScript的数据类型JavaScript是弱类型脚本语言,声明变量时无需指定变量的数据类型。JavaScript变量的数据类型是解释时动态决定的。有以下两种数据类型1.基本数据类型基本数据类型又分为以下六种:UndefinedUndefined类型只有一个值,即特殊的undefined,在使用var声明变量但未对其加以初始化时(未赋值),这个变量的值就是undefined....原创 2019-09-06 21:02:28 · 79 阅读 · 0 评论