js
仙女爱吃鱼
这个作者很懒,什么都没留下…
展开
-
js查找结构不同的两个数组中相同的元素并删除元素
准确的是循环中删除数然后我们当前的需求是在两个 数组中找重复的元素删掉,虽然两个 数组结构不一样,但是逻辑是一样的,最外卖使用forEach循环或者for循环都可以,把要操作的数组放内循环即可。删除后需要注意元素的索引值 ,比如以下案例,删除2之后索引值继续 + 1,但原数组索引已经变化了,所以会出现遍历漏掉元素和索引值对不上的情况。即每次删除之后都使索引值 i - 1,但每次删除数组元素后都需要重新调整数组的索引,如果数组元素比较多的话,性能就会很差。先从数组长度-1索引出发,逐渐减小索引值,来访问数组。原创 2023-08-29 16:40:11 · 285 阅读 · 0 评论 -
js每隔一秒打印一个数,打印1 2 3 4 5
如题,一般按照我们的思路:1.写一个循环,循环5次,打印这个数2.每隔一秒打印一次,用到setTimeout于是,我们很容易写出最后我们发现,打印出了 5 5 5 5 5为什么呢,这个题其实考察的就是js中的事件循环了,这个之前我写过一篇文章,详见【】因为我们的事件循环执行顺序是【先同步,后异步,先微任务,再宏任务】,因为务,而var又不存在块级作用域,当进行for循环时,将 i 传递给setTimeout,因为,等到主线程任务for循环执行完毕再执行。原创 2023-05-04 10:28:07 · 1699 阅读 · 1 评论 -
websocket心跳机制(保活机制)
原理使⽤setInterval和setTimeout实现,每隔⼀段时间就向服务器发送⼀个数据包,告诉服务器⾃⼰还活着,如果服务器也。3.使⽤setInterVal和setTimeout⽅法实现⼼跳。活着就回传⼀个数据包,如果断开,需要客户端重连。1.Websocket连接成功时创建⼼跳检测。2.Websocket接收消息后进⾏⼼跳重置。...原创 2022-07-26 14:33:44 · 5190 阅读 · 0 评论 -
Js判断数据类型的4种⽅式
Js数据类型es56种数据类型string、number、boolean、object(Data、function、Array)、null、undefined。Es6中新增了⼀种数据类型symbol表示独⼀⽆⼆的值,最⼤的⽤法是⽤来定义对象的唯⼀属性名,⽆论何时都不相等。...原创 2022-07-26 14:32:45 · 265 阅读 · 0 评论 -
js去除字符串两边空格不包括换行符,求求你们不要再说用\s了!
明明匹配的是所有,而空字符包括, ,还有!等价于[ \f\n\r\t\v\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u0020\u3000\ufeff]。例如, /\s\w*/ 匹配"foo sdfsdfz."中的’ sdfsdfz’。使用\s字符串两边如果有其他非空格字符也会被去掉,真的无语了,全网都在说用\s去空格,到底能不能分清还有区别呀!正确的是用空格的来表示所以只去除字符串两边空格的正则是而去除字符串两边的空字符才用思路:原创 2022-07-05 18:38:07 · 972 阅读 · 0 评论 -
html模板字符串绑定事件+传递参数
react components和hooks写多了,基本的事件都不会写了,今天给模板字符串绑定事件,绑定不上了哈哈哈哈,后面注册到window上才实现了,然后传参的时候直接把对象就传过去了,所以函数里变量报错了,后面发现是传递的object因为模板字符串编译后直接变成了[object,object],哈哈哈哈哈哈哈太小儿科了这种错误,虽然很丢人但也许也有人和我一样吧,所以记录一下哈哈哈哈把改成注册事件...原创 2022-06-27 11:00:16 · 1455 阅读 · 0 评论 -
js中new一个对象的过程中发生了什么
New一个对象的过程中发生了什么function Person(name) { this.name = name return name // 值类型或者无返回就返回实例 return { // 引用类型返回此对象 info: name + Image }}let p = new Person()1.先创建一个空对象用来存放实例 let obj = {}2.将构造函数的this指向空对象并执行函数体Let result = Person.call(o原创 2022-04-14 18:44:19 · 2146 阅读 · 0 评论 -
【算法】把数组拍平
1.一层嵌套的数组 - concatconcat方法创建一个新的数组该数组由被调用数组和参数元素组成。如果参数是数组,而数组本身的元素中也包含数组,则元素数组不会被递归展开。如果参数是对象,那么新数组中的元素只是参数对象的浅拷贝。如果参数是字符串、数字或布尔值,则该方法将这些值复制到新数组中。let arr = [1,2,[3,4],5,6]Array.prototype.concat.call([], …arr)Array.prototype.concat.apply([], arr)原创 2022-04-13 20:37:42 · 430 阅读 · 0 评论 -
JS防抖与节流
防抖 - 将多次调用变成最后一次触发高频事件后,n秒内函数只执行一次如果在相同的时间内再次触发,就要重新计时,保证里边的代码只执行一次防抖函数就是控制事件的触发频率,不能让同样的事件频繁的触发所以会先清掉计时器再重新执行(重点) function debounce(fn, t) { let timeId return () => { // 如果有定时器就清掉 if (timeId) clearTimeout(timeId) ti原创 2022-04-12 00:09:43 · 283 阅读 · 0 评论 -
this作用域和闭包
作用域为可访问变量,对象,函数的集合作用域种类:全局作用域(window, document)函数作用域(当前函数中)块级作用域(大括号{}}里, const let 声明,if语句和for语句里面的{ }也属于块作用域,每次循环都产生一个块级作用域 )// es6块级作用域If (true) { let x = 100}console.log(x) // 会报错var let const 区别var let声明变量,const声明常量let只在当前作用域生效,不能跨块访原创 2022-04-02 22:21:21 · 980 阅读 · 0 评论 -
深入理解 事件循环event loop 这一篇就够了
首先来了解一下浏览器执行中的线程主线程: js引擎执行的线程,这个线程只有一个,页面渲染、函数处理都在这个线程上。工作线程:也称幕后线程,这个线程可能存在于浏览器和js引擎内,与主线程是分开的,处理文件读取、网络请求等异步事件任务队列(Event Queue): 所有的任务都可以分为同步任务和异步任务同步任务即为立即执行的任务,一般直接进入主线程中执行异步任务不进入主线程,先放到辅助线程中处理,一般分为"发起函数"和"回调函数"(如setTimeout(fn(), 100)中setTimeout原创 2022-03-26 00:07:56 · 1825 阅读 · 0 评论 -
算法:JS 中的链表简介
链表的概念首先我们需要知道链表的概念:多个元素组成的列表元素存储不连续, 用next 指针连在一起那我们数组和链表的区别是什么呢?3. 数组在增加或者删除非首尾元素时往往需要移动元素4. 链表在增删非首尾元素时不需要移动元素,只需要更改next 指针即可JS 中的链表js 中没有链表这个数据结构我们可以使用 object 对象来模拟链表模拟链表我们使用 object 中定义 val 值与添加next 属性得到如下一个链表遍历链表let p = a // 声明一个指针,指原创 2022-03-17 18:06:48 · 2124 阅读 · 0 评论 -
手写promise步骤详解(基础封装+链式调用)
一、promise 封装1.基础架构 function myPromise() { let self = this; // 此处 this 代指myPromise 这个函数 self.status = 'pending' // pending => resolve/reject let value = null // 成功时的参数 let reason = null // 失败时的参数 // 成功的回调 fun原创 2022-03-06 15:31:13 · 1047 阅读 · 0 评论 -
算法:验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama” 输出: true解释:“amanaplanacanalpanama” 是回文串示例 2:输入: “race a car” 输出: false 解释:“raceacar” 不是回文串leetcode链接思路1、将文字中空串和特殊符号去掉并全部转换为小写2、反转字符串,如果和原创 2022-02-23 22:14:01 · 318 阅读 · 0 评论 -
算法:多数元素
多数元素给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入:[3,2,3]输出:3示例 2:输入:[2,2,1,1,1,2,2]输出:2进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。leecode 链接方法1循环一下数组,把每个元素出现的次数做个统计,最后返回出现次数>n/2的/** * @param {原创 2022-02-22 23:22:11 · 149 阅读 · 0 评论 -
算法:只出现一次的数字【javascript】
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4Leecode 链接这里使用异或运算符来解决问题,首先我们来理解一下异或运算符异或运算符主要是在位运算符的时候使用,当然十进制的时候也能用,就是有一个转换过程,现在我们假设一下计算过程(十进制->二进制->原创 2022-02-21 22:16:13 · 377 阅读 · 0 评论 -
算法:寻找两个正序数组的中位数
寻找两个正序数组的中位数给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3原创 2022-02-11 00:26:07 · 702 阅读 · 0 评论 -
js 设置cookie一天内过期(包含24小时与一个自然日)
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2021-09-29 11:56:43 · 3032 阅读 · 0 评论