
js
williamyi74
服从感性,抗拒理性
展开
-
js实现两个大数的相加
当两个数的值超出int类型最大值时相加就会产生精度丢失 但是如果是字符串是不会丢失精度的 所以可以从个位开始按位想加最后拼起来。原创 2023-07-16 10:56:42 · 823 阅读 · 0 评论 -
使用rollup打包ts+react缓存组件发布npm
新建一个项目目录比如叫root,下面新建一个rollup的配置文件: rollup.config.ts 因为rollup良好支持ts和esmodule 所以用ts配置文件。原创 2023-05-05 19:31:50 · 1758 阅读 · 1 评论 -
LeetCode 203 移除链表元素
这道题要删除全部符合val的节点,所以要在循环查找目标节点的同时移除节点。输入:head = [1,2,6,3,4,5,6], val = 6。输入:head = [7,7,7,7], val = 7。输入:head = [], val = 1。删除链表中等于给定值 val 的。输出:[1,2,3,4,5]原创 2023-01-27 14:44:21 · 167 阅读 · 0 评论 -
LeetCode 59 螺旋矩阵II js
如果n为奇数 我们还要处理中间值 n为偶数时遍历完就填充好了 奇数会漏掉中间的位置 需要手动填充。所有元素(n✖️n的正方形矩阵),且元素按顺时针顺序螺旋排列的。每遍历完一圈,下一圈遍历的起始位置就要+1,结束的边界位置也要-1。上行--->从左到右。右行--->从上到下。下行--->从右到左。左行--->从下到上。原创 2023-01-16 10:28:09 · 272 阅读 · 0 评论 -
前端基于位运算的权限控制设计
有了权限值之后,我们就可以用位运算来对权限值进行组合,对应位为1则为有权限,0则没有。原创 2023-01-12 21:34:39 · 565 阅读 · 0 评论 -
LeetCode 20 有效的括号 js
题目:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。以上都是符合题意的。原创 2023-01-12 18:00:46 · 229 阅读 · 0 评论 -
ts实现简易观察者模式
把每个布告板看做是一个观察者,它由update(更新)和display(展示)两个功能组成,update方法是必备的且统一叫update,由气象站主题状态改变时调用update更新,这个过程就是通知更新。气象站需要设计一个主题(Subject),它包含三个状态:气温,湿度和气压,要求主题的状态发生改变后要通知三个展示状态的布告板进行更新,要求布告板的类型是可扩展的,主题的状态是可扩展的。不同类型的布告板实现观察者接口定义各自的展示行为,必需实现update方法,然后往气象站添加观察者并通知更新。原创 2023-01-12 17:20:13 · 555 阅读 · 0 评论 -
js字符串按照中文排序
这个方法,它能根据不同语言进行排序,返回值为-1,0,1,配合sort方法即可解题。将其按照surname+name+address进行排序,知识点就是。原创 2023-01-12 15:49:07 · 666 阅读 · 0 评论 -
js斐波那契数列及递归栈溢出问题
诸如1,1,2,3,5,8,13....这样的序列,除了前两个固定是1(原因见典故)从第三个开始每个数等于前两个数的和也就是n = (n-1)+(n -2) (n>=3)原创 2023-01-12 15:42:05 · 333 阅读 · 0 评论 -
js数组升维和降维(拍平)
有一组包含type字段的数据,要根据相同type进行归类,比如以type为key数组为value存入map控制台输出: 有一个多维数组,要将里面的元素都拿出来放入一个一维数组里控制台输出:原创 2023-01-11 21:53:04 · 378 阅读 · 0 评论 -
手写call,apply,bind
本质就是把要执行的方法挂到将要指向的this上执行或者返回调用句柄。原创 2023-01-11 20:40:15 · 96 阅读 · 0 评论 -
LeetCode 977 有序数组的平方 js
示例 1: 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,100],排序后,数组变为 [0,1,9,16,100]给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 2: 输入:nums = [-7,-3,2,3,11] 输出:[4,9,9,49,121]题意为一个升序数组进行平方后返回升序的新数组。原创 2023-01-11 17:16:13 · 141 阅读 · 0 评论 -
LeetCode 27 移除元素 js
题目:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。原创 2023-01-11 16:45:09 · 247 阅读 · 0 评论 -
递归遍历json对象所有节点值
思路就是获取对象所有的key然后判断值是否为object对象,如果是就递归查找,不是就存入哈希表。原创 2023-01-11 15:50:14 · 1278 阅读 · 0 评论 -
js使用小顶堆构建优先级队列
其实是对每个非叶子节点及其子树的一个递归下沉的过程,从下往上从右至左直到根节点,这样所有的叶子节点及其子树都是满足堆性质的二叉树。原创 2023-01-11 15:44:09 · 623 阅读 · 0 评论 -
LeetCode 704 二分查找 js
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。2.数组元素唯一(否则会出现多个答案的情况)原创 2023-01-10 16:59:05 · 146 阅读 · 2 评论 -
LeetCode 347 前k个高频元素 js
给定一个非空的整数数组,返回其中出现频率前 k 高的元素。父节点: n-1/2。左子节点: 2n+1。右子节点: 2n+2。原创 2023-01-10 16:24:36 · 402 阅读 · 0 评论 -
LeetCode 1 两数之和 js
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。使用哈希表将值做为key索引做为value存储起来,遍历寻找对应的target-x即可。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。原创 2023-01-09 21:35:38 · 93 阅读 · 0 评论 -
LeetCode 209 长度最小的子数组(滑动窗口) js
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。时间复杂度不是O(n2),虽然是for套while双从循环,但是滑动窗口移动时元素一进一出实际访问次数是2次,所以是2n,也就是O(n)输入:s = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的子数组。原创 2023-01-09 21:21:44 · 123 阅读 · 0 评论 -
react-router在非组件中使用history对象
然后我们就可以在其它js文件里导入我们自己创建的history对象即可使用。然后在将history对象注入Router组件。原创 2023-01-05 11:37:39 · 463 阅读 · 0 评论 -
数据结构应用: 栈实现十进制转2~36进制
思路: 利用栈的先进后出特性实现余数的倒序组合,将每一次对2取模的结果压入栈,每一次的商做为下一次的除数,只要除数>0则继续除下去,最后从栈顶将余数一个个弹栈组合起来.十进制转二进制就是将十进制数对2进行取模运算,将每一次运算得到的余数从最后一次开始倒序组合即为这个十进制数的二进制数,详细可以百度辗转相除法。原创 2022-10-15 12:11:44 · 1082 阅读 · 0 评论 -
redux的connect注入props到组件中
【代码】redux的connect注入props到组件中。原创 2022-08-30 18:23:34 · 331 阅读 · 0 评论 -
Vue.extend封装函数式调用弹窗组件
平时我们使用组件都是import xxx from 'xxx';然后components里面注册,最后template中使用,这样一套流程下来略麻烦,有没有一种方式能像ElementUI的弹窗组件一样代码调用呢?组件目录结构大概就是这样。原创 2022-08-28 16:53:06 · 991 阅读 · 0 评论 -
js闭包实现缓存函数
总结:利用闭包及纯函数的特性来缓存函数每次调用的结果提高性能,避免重复的计算,使用时要注意一定要是个纯函数!接收一个函数,用闭包将每次函数执行的结果缓存起来。例子2:求斐波那契数列优化。2️⃣缓存函数的应用场景。例子1:求1到n的和优化。1️⃣什么是缓存函数?...原创 2022-08-26 14:44:17 · 573 阅读 · 0 评论 -
echarts自定义图例富文本使用
最近需求有遇到在echarts的legend图例中插入图片和定义样式的场景,于是用到了rich富文本,使用方法还挺麻烦,并且属性写错了位置都不生效,做个笔记原创 2022-06-29 19:02:58 · 1010 阅读 · 0 评论 -
el-upload手动控制上传多文件校验和文件删除
之前写过一篇关于el-upload单文件自定义上传文章:axios+elementui的upload使用http-request自定义文件上传_Suk_阿硕的博客-优快云博客_http-request自定义文件上传<!-- 关于组件的部分属性: action:上传的地址,和axios没关系,elementui自己发请求 :show-file-list:是否显示上传的文件列表 :on-success:上传成功的回调 :on-error:上传失败的回调 :before-upload:上传之前的回调,可.原创 2022-04-27 01:02:20 · 12533 阅读 · 0 评论 -
vue扁平数据转树形结构递归组件渲染
这里使用的是用map映射id和自身然后遍历通过parentid找父级的方法源扁平数据:{ "code": 200, "message": "操作成功", "data": [ { "functionId": 10000, "parentFunctionId": 0, "functionName": "安全检测" }, { "funct原创 2022-04-25 11:46:58 · 622 阅读 · 0 评论 -
webpack配置sass-loader样式自动前置
插件要安装sass,sass-loader配置好后就不用每个文件都引入了,直接用就行。原创 2022-03-13 18:04:41 · 3323 阅读 · 0 评论 -
配置.eslintignore忽略检查文件夹
配置eslint不检查打包目录和第三方库的目录,放置eslint因为引入第三方库或者打包后的代码被检查不符合代码规范而报错/dist/src/vender文件建在项目根目录下,配置好后重启vscode原创 2022-03-03 21:53:43 · 2786 阅读 · 0 评论 -
jsconfig.json配置@路径提示
首先在项目的根路径下创建一个jsconfig.json,内容为:{ "compilerOptions": { "baseUrl": ".", "paths": { "@/*": [ "./src/*" ], } }, "exclude": [ "node_modules", "dist" ]}然后保存重启v原创 2022-03-03 21:48:17 · 2662 阅读 · 0 评论 -
whistle+switchyOmega配置web代理
首先安装whistle这个代理软件:// 首先要安装node 自行去官网下载安装 此处跳过// 使用npm全局安装whistlenpm i -g whistle安装成功后启动whistle:w2 start启动成功出现以下打印内容:whistle启动在localhost:8899端口,在浏览器输入localhost:8899即可访问whistle配置页面:输入aaa.com http://127.0.0.1:8080即可将aaa.com代理到本地8080端口到这里原创 2022-02-11 22:32:37 · 8204 阅读 · 2 评论 -
正则表达式匹配模式随记
实例 描述 [Jj]ava 匹配 “Java” 或 “java”。 rub[ye] 匹配 “ruby” 或 “rube”。 [abcdef] 匹配中括号内的任意一个字母。 [0-9] 匹配任何数字。类似于 [0123456789]。 [a-z] 匹配任何小写字母。 [A-Z] 匹配任何大写字母。 [a-zA-Z0-9] 匹配任何字母及数字。 [^au] 除了au字母以外的所有字符。 [^0-9]原创 2022-02-09 20:36:00 · 208 阅读 · 0 评论 -
es5实现继承
JavaScript语言本身并没有提供继承的机制,即使es6推出的extends关键字也是通过prototype实现的继承,所以核心就是通过prototype继承到父类的原型成员,通过子类调用父类构造函数达到继承父类实例成员,两者的结合使用完成继承的目的.es5实现继承的方法有很多,比较好的方式为组合式继承(替换原型继承+构造函数继承)下面直接上代码:/** * 组合式继承 = 替换原型继承/寄生式[意为将父类原型寄生在子类原型链上](继承父类实例成员) + 借用构造函数继承(继承父类原型成原创 2022-02-07 17:05:10 · 1089 阅读 · 0 评论 -
js严格模式下的变化
1. 不能使用delete关键字删除已创建的栈引用(如果是删除堆中的内容是可以的)'use strict';var num = 1;delete num;// 会报错2.不能直接创建全局变量,也是为了防止意外的创建全局变量污染作用域'use strict';num = 1;// 会报错num is not defined! 因为它会当做一个lhs查询赋值的操作,而不是创建一个全局变量3.this指向在处于全局作用域中的函数中为undefined'use strict';fu原创 2022-01-26 22:48:20 · 704 阅读 · 0 评论 -
原生js实现下拉刷新和上拉加载更多
1.下拉刷新由于原生js太久不用了,这里列一下此处涉及到的前置知识点:移动端触屏事件: touchstart(手指按下的一瞬间),touchmove(手指在屏幕上移动时),touchend(手指松开时)手指在页面上的坐标: pageX,pageY写之前首先要懂原理,下拉刷新的本质就是用户在页面顶部进行上拉动作时拉到一定的距离触发数据刷新.大概需要做的几个点:1.在手指按下时(touchstart)记录手指的按下位置2.在手指下滑时(touchmove)计算手指的坐标离手指按原创 2022-01-14 23:49:47 · 2808 阅读 · 1 评论 -
百度地图api杂记
前言准备:首先去百度地图开放平台创建应用获取账号ak,引入脚本加载sdk <script type="text/javascript" src="https://api.map.baidu.com/api?v=1.0&type=webgl&ak=你的ak"></script>一.生成地图export default function Map() { useEffect(() => { // 使用浏览器的h5定原创 2021-10-20 21:06:36 · 131 阅读 · 0 评论 -
new Date()对象比较时间不准问题
Date.parse()是不能精确到毫秒的,只能精确到秒,所以连续点击很快的话比较时间就会出问题能生成到毫秒的方法:+new Date()new Date().getTime()Date.UTC()new Date().valueOf()原创 2021-08-20 00:08:24 · 1373 阅读 · 0 评论 -
递归实现函数柯里化累加
方法1:支持getSum(1)(2)(3)(4)(5)调用: function getSum(num) { // 使用递归做累加 const caller = (sum) => getSum(num + sum); caller.valueOf = caller.toString = () => num return caller; }console.log(getSum2(1)(2)(3)(4)(5))方法2:既支持getSum2(1)(2)(原创 2021-07-02 14:26:47 · 454 阅读 · 0 评论 -
provide/inject传递响应式数据
一开始用踩了一堆坑,provide怎么写都不行,官网对其响应式的描述原话:意思就原创 2021-06-20 16:04:44 · 2480 阅读 · 0 评论 -
webpack入门
首先创建一个文件夹webpack-demo:创建package.json文件:npm init -y创建src目录,新建入口文件,比如叫app.js,里面导入了另一个模块moduleLog.jsapp.js:require('./moduleLog')();document.write('<h1>入口文件index is loaded!</h1>')moduleLog.js:module.exports = () => { docum原创 2021-05-22 19:31:26 · 203 阅读 · 1 评论