自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 vue使用keep-alive后,清除所有路由缓存

vue使用keep-alive后,清除所有路由缓存

2023-01-05 10:43:35 449

原创 微信小程序分包 主包分包链接地址调用

微信小程序如何分包,主包链接到分包。同个分包间链接跳转,分包与分包间链接跳转

2023-01-03 12:49:56 291

原创 git 远程分支替换本地

git命令

2022-12-26 09:52:02 322

原创 旋转数组算法题

旋转数组算法题给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数输入: [1, 2, 3, 4, 5, 6, 7] 和 k = 3输出: [5, 6, 7, 1, 2, 3, 4]解释:向右旋转 1 步: [7, 1, 2, 3, 4, 5, 6]向右旋转 2 步: [6, 7, 1, 2, 3, 4, 5]向右旋转 3 步: [5, 6, 7, 1, 2, 3, 4]function rotateArr(arr, len){ if(len < 0 || .

2021-04-10 16:47:25 124

原创 Promise.finally

Promise.prototype.finally = function(cb){ cb = typeof cb === 'function' ? cb : function(){}; let Pro = this.constructor; return this.then( value => Pro.resolve(cb()).then(() => value), reason => Pro.resolve(cb()).then(() => throw reason)

2021-04-07 22:52:41 134

原创 字符串大小写取反,如:‘AbC‘ 变成 ‘aBc‘

function swapString(str){ return str && str.replace(/[a-zA-Z]/g, val => /[a-z]/.test(val) ? val.toUpperCase() : val.toLowerCase()) || '';}swapString('adASjOdapASJO!@#4123123.l124'); // "ADasJoDAPasjo!@#4123123.L124"

2021-04-07 22:38:07 349

原创 js - 数组扁平化

迭代方式:function myFlatten(arr){ if(!arr || !arr.length) return []; let newArr = [...arr]; let flattenArr = []; while(newArr.length){ let item = newArr.shift(); if(Array.isArray(item)){ newArr.unshift(...item); }else{ flattenArr.push(item);

2021-04-07 18:16:46 75

原创 树的先序/中序/后序遍历

树的结构如下:先序(深度搜索遍历DFS):先顶点,再左边节点,接着右边节点前序结果:ABDEHICFG中序:先左边节点,再顶点,最后右边节点中序结果:DBHEIAFCG后序:先左边节点,然后右边节点,最后为顶点后序结果:DHIEBFGCA树的三只序遍历结果:前序中序后序主要是记住顶点的顺序,顶点先遍历的是前序,顶点在中间遍历的是中序,顶点最后遍历的是后序,无论哪种序都是先遍历左节点再遍历右节点。树的层级遍历(广度搜索遍历)是按照层级遍历,即先第一层再第二层第三层。。。层级遍历

2021-04-06 15:59:15 3185

原创 js 防抖跟节流函数的实现

//防抖function debounce(fn, timeout){ let timer = null; return function(){ timer && clearTimeout(timer); timer = setTimeout(() => { fn.apply(this, arguments) }, timeout) }}//节流function throttle(fn, timeout){ let flag = false; ret

2021-04-02 17:49:04 83

原创 请把俩个数组 [A1, A2, B1, B2, C1, C2, D1, D2] 和 [A, B, C, D],合并为 [A1, A2, A, B1, B2, B...

请把俩个数组 [A1, A2, B1, B2, C1, C2, D1, D2] 和 [A, B, C, D],合并为 [A1, A2, A, B1, B2, B, C1, C2, C, D1, D2, D]function unionArray(A, B){ return [...A, ...B].sort((a, b) => { if(a.charCodeAt() > b.charCodeAt()){ return 1; }else if(a.charCodeAt() &.

2021-04-01 14:25:21 687

原创 实现一个 normalize 函数,能将输入的特定的字符串转化为特定的结构化数据

题目:实现一个 normalize 函数,能将输入的特定的字符串转化为特定的结构化数据字符串仅由小写字母和 [] 组成,且字符串不会包含多余的空格。示例一: ‘abc’ --> {value: ‘abc’}示例二:’[abc[bcd[def]]]’ --> {value: ‘abc’, children: {value: ‘bcd’, children: {value: ‘def’}}}function normalize(str){ let result = {}, obj = .

2021-03-31 18:05:00 311

原创 js 字符跟二进制互转,二进制跟base64互转

//字符转二进制function str2binary(str){ if(!str) return; if(typeof str !== 'string') return; const zero = '00000000'; let bi = ''; for(let i of str){ let num = zero + i.charCodeAt().toString(2); //获取二进制 bi += num.slice(-8); //取8位二进制 } return bi;}/

2021-03-31 11:12:35 1569

原创 js 模糊搜索 关键词高亮显示

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>auto comple

2021-03-30 18:31:00 390

原创 setTimeout 实现 setInterval

//方法一function mySetInterval(fn, timeout = 0, ...args){ const _self = this; const _setTimeout= function(){ setTimeout(() => { fn.apply(_self, args); _setTimeout(); }, timeout) } _setTimeout();}//方法二function mySetInterval(fn, timeout =

2021-03-30 15:28:42 93

原创 setTimeout的简易实现

var mySetTimeout = function(fn, timeout = 0, ...args){ var start= +new Date(); var timer, now; var loop = () => { timer = window.requestAnimationFrame(loop); now = +new Date(); if(now - start >= timeout){ fn.apply(this, args); window.

2021-03-30 11:41:35 374

原创 js 获取url上的参数

//name为需要获取值的参数function getUrlParam(name, url){ url = url || window.location.href;//如果不传则取当前网址 var res = {}; url.replace(/[?|&](\w+)=([^&#]*)/g, (all, key, val) => { res[key] = val; return all; }) return res[name] || '';}//测试//网址为:

2021-03-26 21:19:02 136

原创 js reduce函数简易实现

Array.prototype.myReduce = function(fn, initialVal){ if(this === null){ throw new Error('对象为空') } if(typeof fn !== 'function'){ thow new Erroe('请传入函数') } var o = Object(this), len = o.length >>> 0, nextVal, i = 0; if(initialVal){.

2021-03-26 17:09:37 209

原创 js中forEach、map、filter、some、every函数的简易实现

forEach跟map函数区别在于map有返回值,forEach无返回值map跟filter函数的区别在于filter会过滤值,而map直接返回值//forEachArray.prototype.myForEach = function(fn){ if(typeof fn !== 'function'){ throw new Error('请传入函数!') } var o = this, len = o.length <<< 0, _this = arguments

2021-03-26 16:10:04 136

原创 animation动画函数实现

//获取dom中具体prop属性的值function getStyle(dom, prop){ if(dom.currentStyle){//兼容IE6/7/8 return dom.currentStyle[prop]; }else{ return window.getComputedStyle(dom, null)[prop]; }}function animation(dom, json, time = 30, cb){ clearInterval(dom.timer);//多

2021-03-26 15:03:18 413

原创 getElementsByClassName函数实现

Element.prototype.getElementsByClassName = Document.prototype.getElementsByClassName = function(_className){ const allEle = document.getElementsByTagName('*'); let classesEle = []; //去掉前后空格,如果类名之间的空格大于2个,则替换为一个空格 const trim = str => typeof str ==..

2021-03-26 01:11:28 208

原创 insertAfter方法的实现

第一种:直接在父节点里面插入的情况//直接在节点原型上新增方法Element.prototype.insertAfter = function(target, ele){ const nextEle = ele.nextSibling || ele.nextElementSibling; if(nextEle){ this.insertBefore(target, nextEle); }else{ this.appendChild(target);//ele为最后一个节点,可直接使用app

2021-03-25 22:51:49 454

原创 js 自定义时间格式

//设置时间格式function dateFormat(date, format) { if (!date) return '1970-01-01 00:00:00'; if (!format) format = "yyyy-MM-dd HH:mm:ss"; let type = typeof date; if(type === 'string'){ date = new Date(date.replace(/-/, "/")); }el

2021-03-22 18:16:34 502

原创 js 计算含中文的字符串长度

//一个中文算两个字符function getStrLength(str){ if(!str) return 0; //先去除前后空格,然后把中文用两个空格替换,再获取长度 return str.replace(/^\s+|\s+$/g, '').replace(/[^\x00-xff]/gm, ' ').length;}//使用var str = ' 我们的祖 国aaa是花园 ';var len = getStrLength(str); // 20..

2021-03-22 17:46:31 775

原创 js 多属性排序

/*** 按照属性排序* @param item1 比较第一项* @param item2 比较第二项* @param 属性值对象 如:{"name": "asc", "age": "desc", 'num': 'desc' }**/function SortByProps(item1, item2, obj) { if(obj) { let asc = true; for (let o in obj) { if(obj.hasOw

2021-03-22 16:45:55 193

原创 Promise简易实现

class MyPromise{ constructor(executor){ this.status = 'pending'; this.value = undefined; this.reason = undefined; this.onFullfillcbs = []; this.onRejectcbs = []; const resolve = val => { i.

2021-03-19 18:37:29 63

原创 JS - 深拷贝

可拷贝原始类型:Number、Boolean、String、Symbol可拷贝引用类型:Set、Map、Date、RegExp、Function、Array、Objectfunction deepClone(target){ //判断是否为对象 const isObject = target => { if(target === null){ return false; }else { return typeof target === 'objec

2021-03-18 19:25:15 75

原创 ES5实现new功能

function myNew(){ var constructor = Array.prototype.shift.call(arguments), //获取第一个参数 result = null, //存结果 newObj = null, //存放新对象 flag = false; //判断返回值是不是对象或函数flag if(!constructor || typeof constructor !== 'function'){//判断参数.

2021-03-17 18:48:03 350

原创 随机生成32位uuid

今天看到一段可爱的代码,获取32位uuid的方法,嘻嘻//获取32位uuid方法function getUuid() { return ('xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r = Math.random()*16|0, //随机生成 0 -15的数字 v = c == 'x' ? r : (r&0x3|0x8); //c为y时只取8、9、a、b中的一个 retu

2021-03-17 18:38:38 982

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除