自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于在vue3路由拦截中使用pinia遇到的问题总结

但是这样却只能访问到pinia中的初始信息,pinia中的信息改变了路由拦截中是获取不到的,后来查看官方文档,发现可以在路由拦截中进行pinia的初始化,这样每次用户登录后存入的信息才能获取到,才能进行权限的校验,这是一个很坑的地方,用vuex就不会出现这个问题。由于pinia的初始化要晚于router的初始化,所以一开始按照网上的方法再在router中初始化一次pinia,这样确实能访问到pinia中的信息。

2023-09-20 10:36:45 797

原创 H5移动端vue-masonry + van-list实现瀑布流懒加载效果

【代码】H5移动端vue-masonry + van-list实现瀑布流懒加载效果。

2023-08-06 22:50:30 773

原创 leetCode2722 JS/TS专项 根据 ID 合并两个数组

根据题目要求,可以直接采用哈希表存入两个数组的元素,键值对为,item就是数组中的每个元素,首先存入arr1的元素,然后再遍历arr2,根据题目要求,如果哈希表中有与arr2中元素同名的id,arr1相同的键值对就替换成arr2的,不同的直接保留。要实现这个需求,可以自己写一个方法来实现,可以利用到Object.hasOwnProperty()方法,合并时需要注意的是不能打乱原来键值对的顺序,意思是如果arr2中单独出现的键值对在合并时就只能添加到对象的后面。

2023-07-08 19:54:35 688

原创 刷题之路-leetCode1253. 重构 2 行二进制矩阵 by TypeScript

根据所有的条件,我们可以采用贪心算法策略 + 两次扫描即可解决本问题,第一次扫描先填充colsum数组中元素为2的对应的列数,填充的同时需要依次将upper和lower减减。第二次扫描再满足colsum数组中元素为1的情况,upper更大就先填充第一行,否则填充第二行。两次遍历完后,如果这个二维矩阵是符合条件的,那么upper和lower都应为0,否则为无效答案,应该返回一个空数组。3.返回的二进制矩阵只有两行,列数与colsum数组相同。2.colsum数组中的元素最大为2,最小为0;

2023-06-29 23:32:41 197

原创 leetCode JS/TS专属题 2622. 有时间限制的缓存

使用Map + 定时器来解决,我们可以创建一个Map,在set()方法中先判断Map中是否有还未过期的键值对,如果存在,先清掉之前设置的定时器,防止之前的定时器将当前设置的键值对删掉,然后再设置新的定时器,定时器的作用就是经过duration毫秒后,删掉当前键值对,就代表它过期了。

2023-06-28 21:34:57 86

原创 leetCode1023. 驼峰式匹配 正则表达式 by JavaScript

先遍历pattern构建正则表达式,题目说明了queries和pattern都由英文字母组成,那么就很好构建,pattern里面的每一个字母只能出现一次,而每个字符之间又可以出现0个或多个小写英文字母。构建好之后,遍历queries直接查询即可。

2023-06-16 23:40:40 164

原创 Node.js 中间件及ejs模板引擎的使用

hello express

2023-06-15 23:19:13 616

原创 leetCode1171. 从链表中删去总和值为零的连续节点(分析 + 注释) by TypeScript

然后不断的循环遍历这个哈希表,来删除和为0的区间,每执行完一次删除区间操作,就需要将哈希表清空,然后再根据新的前缀和数组进行存取,不断地执行这些操作,当找不到拥有相同前缀和的节点了,就可以结束循环。最简单的做法,先将链表所有节点的值全部push到一个数组中,另开辟一个数组存放这些值的前缀和,开辟一个哈希表存放拥有相同前缀和节点的下标位置,放在一个数组中,为什么要这样存呢?

2023-06-12 13:44:53 105

原创 leetCode1604. 警告一小时内使用相同员工卡大于等于三次的人 详细分析加注释 by JavaScript

先将keyTime中每一项时刻的冒号都替换掉,变成数字字符串,再使用Hash Map来存每位员工的用卡时刻。遍历Hash Map中每位员工的时刻表(需要先按时间先后排序),判断是否有连续3个及以上的时刻都在一个小时内,具体到代码: 就是判断3个时刻中,当前项与后一项的差值总和不超过100(因为这里已经将时刻转换为了数字字符串,比如12:00和13:00之间相差60min,但转换过后对应的就是1300 - 1200 = 100),只要存在这样连续的3个时刻就立即结束循环,这个员工就是要找的那个员工。

2023-06-08 23:15:27 73

原创 leetCode2611. 老鼠和奶酪

每块奶酪都是要被鸭脖吃掉的,取决于被哪只鸭脖吃,第一只鸭脖恰好要吃掉k块奶酪,我们可以先让第二只鸭脖吃掉所有的鸭脖,使用贪心算法,将两只鸭脖分别要吃的奶酪差值计算出来放在一个数组中,将这个数组降序排序,从头选取k个奶酪给第一只鸭脖吃即可,这里直接累加差值更新结果即可。块不同类型的奶酪,每块奶酪都只能被其中一只鸭脖吃掉。请你返回第一只鸭脖恰好吃掉。

2023-06-07 18:35:36 175

原创 leetCode2352. 相等行列对 Hash Map模拟 by JavaScript

就是找这个矩阵中有多少种行列都相等的情况,这里使用Hash Map对每一行进行计数,key存储为String类型,可以借助JSON.stringify()方法对每一行进行转换,然后再次遍历。,对每一列进行查找,如果在Hash Map中找到了就更新结果。

2023-06-06 19:13:40 86

原创 leetCode2559. 统计范围内的元音字符串数 by JavaScript

使用前缀和统计words中当前位置之前的元音字符串个数,遍历queries计算结果,用结尾处的元音字符串个数减去开始处的个数得到结果,压入数组。

2023-06-02 11:37:23 54

原创 解决node.js中前端使用POST请求,后端end过早,前端拿不到数据返回空白的问题

这里有一个问题,由于在接口中监听的on事件是异步执行的,在server.js中调用接口函数时,数据还没收集完,render()方法还没有渲染完数据返回给前端,服务器就过早执行end响应了,导致页面上后端返回的是空白。最开始的时候在req上监听on事件一点一点接收数据,数据收集完毕时调用render()方法处理数据并返回给前端,然后在server.js中的服务器方法中执行res.end()响应。在接口方法中接收,数据收集完毕后执行render()方法将这个回调函数传进去。

2023-06-02 00:21:27 820

原创 leetCode1003. 检查替换后的词是否有效 栈 + HashMap by JavaScript

这道题与有效的括号类似,只不过要多考虑几种情况,先用HashMap存入两种对应的情况,直接遍历s,遇到'ab'、'a'入栈,遇到'c'、'bc'出栈,如果栈顶为'a',当前遍历到的字符为'b',直接将'b': 'c'存入哈希表,以应对'a...b...c'这种情况,最后判断栈是否为空即可。

2023-05-31 16:32:29 48

原创 leetCode198. 打家劫舍 简单动态规划 by JavaScript

dp方程:dp[i] = (dp[i - 2] + nums[i]) > dp[i - 1]?根据题目描述,小偷不能偷相邻的两家,先初始化dp前两位。

2023-05-30 14:21:21 69

原创 node.js使用cheerio模块实现简易爬虫函数

创建入口文件spider.js并引入cheerio模块,在spider.js中创建一个服务器并获取到网站的HTML信息,然后创建spider函数爬取这个网站的指定信息并返回给我们的服务器。首先使用 npm init初始化项目生成package.json文件和node_modules文件夹,再使用npm i cheerio --save安装cheerio模块。有些网站的部分模块并不是采用前后端分离模式开发的,而是后端直接将模板渲染在网页上的,这时候我们就可以使用爬虫技术爬取到这些信息。

2023-05-27 21:45:47 336

原创 JavaScript JSON.stringify()在算法中的一点小应用

其他字符串的差值整数数组都相同,那我可以直接把这些数组求出来然后遍历找不同就行了,但我们都知道,两个数组是不能直接使用'==='或'=='比较的,我们可以使用every()方法来遍历数组进行比较,但使用every()方法写起来太过繁琐,一点都不简洁,所以这里我想到了使用JSON.stringify()将数组转换为字符串形式来进行比较,方法是可行的,因为两个字符串之间可以直接进行比较。来自于leetCode2451. 差值数组不同的字符串,是一道简单题。,每一个字符串长度都相同,令所有字符串的长度都为。

2023-05-26 14:16:54 35

原创 Vue2.x自定义指令实现header吸顶效果

在有些场景中,我们需要实现一个header在向下滑动到一定距离时自动出现,否则隐藏,我们可以使用Vue2.x的自定义指令来实现。实现方法就是,在自定义指令中给window监听一个scroll事件,判断滚动的位置,设置组件的隐藏显示。

2023-05-26 11:10:20 215

原创 使用node.js作为客户端,分别使用GET和POST方式转发其他网站的数据

使用node.js作为中间层,向其他网站拿数据,node本身就相当于一个服务器,服务器和服务器之间是没有跨域限制的,拿到数据后,再在自己的网页中请求node服务器上的数据,以此来解决跨域限制。

2023-05-25 16:52:57 318

原创 leetCode1090.受标签影响的最大值 by JavaScript

意思就是一共有几个物品,每个物品都有自己的重量和标签,现在要拿总数不超过numWanted个物品,而且每种物品最多拿useLimit个,求最重可以拿多重的物品。明确题意后,按重量排序后使用哈希表记录每种物品拿的个数,贪心即可。个元素的值和标签分别是。个元素中选择一个子集。

2023-05-25 16:38:30 49

原创 Vue3自定义Hooks写法

如果一个组件很复杂,我们把所有的逻辑都写在setup()中的话,会造成代码可读性很低,代码混乱,不利于维护。所以我们可以用自定义Hooks写法,也就是抽离式写法,把页面的部分逻辑抽离出来,写在单个文件中,以达到减低代码耦合度,提高复用性的作用。Vue3提供了一套全新的Composition API(组合式 API),可以使用函数式写法来封装组件,和传统的类写法有着比较大的区别,Hooks写法没有了this指针,生命周期函数更名,路由和vuex的写法也全部变成了函数式写法。

2023-05-24 11:10:47 319

原创 在Vue2.x中使用过渡动画遇到的一点小问题

我自己的想法是,给这个盒子的展开过程加一个过渡动画,让其展开更顺滑,用户体验更好,最开始想用Vue内置的来做,结果发现自己怎么弄都实现不了,所以就放弃了这个方法。我想到变化的是这个盒子的高度,所以就需要给这个盒子的高度加上一个过渡动画,如果直接加是不生效的,因为没给盒子设置一个固定高度,但直接设置高度就会出现一个问题:由于每段简介文字字数不一样,所以导致盒子撑开的高度也不一样,直接设置高度的话,会导致内容少的底下空白太多,内容多的,文字就会盖住后面的元素。

2023-05-23 09:50:05 100

原创 纯HTML + css实现一个3D旋转的立方体

3D自动旋转,阴影效果

2023-05-22 13:53:34 537

原创 关于使用Vue mixins的一个小场景

有一个移动端的底部导航栏tabbar,想实现在视图级组件中显示,在其他子组件中隐藏,一个一个的进行显示隐藏会重复地写很多代码,很不方便,而使用mixins结合vuex的公共状态管理是非常简单省力的。Vue mixins是Vue中的一个混入用法,我们可以定义一个混入对象,里面可以包含生命周期函数和方法,可以在任何组件中导入进行混入,达到复用的效果。在想要进行隐藏tabbar的组件中混入此对象,此对象中的代码会自动混入组件中。

2023-05-22 13:28:47 55

原创 纯HTML + css实现毛玻璃模糊效果

图片的url是我自己的图片,需要替换成自己的。视频被压缩过比较模糊,实际很清晰。

2023-05-15 17:05:47 344 1

原创 leetCode1282. 用户分组 by JavaScript(详细注释)

中,并且每个人必须在一个组中。如果有多个答案,返回其中。个人被分成数量未知的组。每个人都被标记为一个从。个人所在的组的大小。返回一个组列表,使每个人。

2023-05-15 16:22:31 75

原创 leetCode2649. 嵌套数组生成器js/ts专属题(详解)

根据题目描述,我们需要中序遍历传入的参数arr数组,arr是一个嵌套的多维数组,在遍历到数组时需要再进行递归的遍历,只在遇到整数的时候生成它。一个很简单的思路就是先将这个多维数组arr打平,变成包含所有非数组类型元素的一维数组,然后再进行遍历yield每个元素。是从左到右遍历每个数组,在遇到任何整数时生成它,遇到任何数组时递归应用。是一个递归数据结构,包含整数和其他。,请你返回一个生成器对象,按照。的顺序逐个生成整数。

2023-05-15 14:50:35 97

原创 leetCode2624. 蜗牛排序js/ts专属题目详解

时,返回一个空数组即可。我们通过观察原数组的排列发现,可以把原数组看成是一个s型的排列顺序,想要输出题目所需矩阵,首先,我们先将原数组的每一列都整理成从上到下的顺序,然后再进行赋值,变为每一行从左到右的顺序,这里需要开辟一个答案数组。蜗牛排序从左上角的单元格开始,从当前数组的第一个值开始。然后,它从上到下遍历第一列,接着移动到右边的下一列,并从下到上遍历它。方法,该方法将 1D 数组转换为以蜗牛排序的模式的 2D 数组。主要通过两个双重循环来完成,第一个整理原数组的排列顺序,第二个对答案数组进行赋值。

2023-05-15 12:31:36 147 1

原创 leetCode394. 字符串解码(超详细分析) by JavaScript

例如,"abcd"可能会被编码为“1[a]1[b]1[c]1[d]”,也可能会被编码为’abcd’,同时,s也可能会被编码为嵌套的形式,例如’6[a2[bcd]]’。分析此问题,输入数据s是一个由数字字符、字母字符和方括号字符组成的字符串,题目保证输入数据有效,那么可以发现’[]’里面的内容一定对应’[’左边紧挨着的数字,由于输入的数据可以进行方括号的嵌套,所以使用栈来解决这个问题完美契合题目的特性。(a) 如果当前字符是数字字符,则向后查找进行数字字符的拼接,作为curNum,直到遇到’[’。

2023-05-12 15:58:35 1417

原创 【JS】实现一个可以自动获取bing积分的脚本

Tampermonkey,自动获取bing积分

2023-04-29 11:12:03 4206 4

原创 实现页面标签获取函数(递归和非递归)

【代码】实现页面标签获取函数(递归和非递归)

2023-04-26 22:02:20 47 1

原创 手动实现JSON.stringify()

手动实现JSON.stringify,对象转换。

2023-04-23 17:18:57 280

原创 用JavaScript实现背包问题(非01背包)- 贪心算法

贪心算法、JavaScript实现背包问题

2023-04-18 22:12:32 93 1

原创 leetCode 1238循环码排列(详细注释) JavaScript暴力实现

JavaScript暴力破解

2023-04-13 16:37:18 56 1

空空如也

空空如也

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

TA关注的人

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