自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

望南

慢慢的总结一些在项目中遇到的坑与填坑心得,以及分享和学习一些新的技术

  • 博客(40)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 javascript - for.of和for.in的区别

定义和用法for…infor/in 语句用于循环对象属性。循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。for…ofJavaScript for of 语句循环遍历可迭代对象的值。它允许您循环遍历可迭代的数据结构,例如数组、字符串、映射、节点列表等:代码对比遍历数组const arr1 = [1, 2, 3, 4, 5]const arr2 = [{ name: 1 }, { name: 2 }, { name: 3 }]for (let i in

2022-01-12 14:30:03 404

原创 javascript - 引用类型的比较

const num1 = new Number(1)const num2 = new Number(2)console.log(num1 == num2) //falseconsole.log(num1 === 1) //falseconsole.log(num1 == 1) //truelet arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]let arr2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]let arr3 = [ { i

2022-01-12 10:53:24 339

原创 javascript - map、filter、reduce区别及使用

定义和用法map()map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。map() 方法按照原始数组元素顺序依次处理元素。注意: map() 不会对空数组进行检测。map() 不会改变原始数组。filterfilter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。注意: filter() 不会对空数组进行检测。注意: filter() 不会改变原始数组。reducereduce() 方法接收一个函数作为累加

2022-01-11 20:04:56 363

原创 vue 中ts实现mqtt封装

安装mqttnpm i mqttuntils/mqtt.tsimport mqtt from 'mqtt'// 声明mqtt的options数据包类型export interface MqttconnecOption extends mqtt.IClientOptions {}// 为方便外部组件处理message,声明消息回调方法类型export declare type OnMessageFun = (topic: string, payload: Buffer) => voi

2022-01-11 17:03:49 1540 1

原创 配置eslint代码规范

1、vscode安装eslint、Prettier和vetur2、安装依赖yarn add eslint prettier eslint-config-prettier eslint-plugin-prettier -D要实现typescript环境,继续安装如下依赖yarn add typescript @nuxtjs/eslint-config-typescript @typescript-eslint/eslint-plugin @typescript-eslint/parser -D

2022-01-10 15:18:59 944

原创 leetCode - 无重复字符的最长子串

function lengthOfLongestSubstring(s: string): number { //l 左指针 maxLength 最大长度 let l:number = 0 let maxLength:number = 0 // hashMap存储重复字符,以及出现的位置 const map = new Map() // r 右指针 开始遍历 for (let r:number = 0; r < s.length; r++) {

2022-01-04 16:09:15 522

原创 vue3.0中使用 websocket,封装到公共方法

首先创建一个socket.ts文件封装公共方法/* * @Descripttion: 封装socket方法 * @version: * @Date: 2021-08-06 11:14:39 * @LastEditTime: 2021-10-26 14:06:34 */import i18n from '@/locales'import store from '@/store'import { ElMessage } from 'element-plus'import { Base64 }

2022-01-04 11:13:15 5240 3

原创 JS实现url地址栏参数拼接、更改或者删除,(根据筛选条件,一个方法实现)

其实主要判断的点有两个,一共三种情况:判断url参数是否只有一个,使用一个参数的正则匹配判断多个参数:1、 判断是否是第一个参数2、判断是否是第二个参数这两个点梳理出来就开始实现正则匹配,但是每次匹配的时候要考虑传入的值是否为空,如果为空要按上述两种情况去处理,把值替换为空串,如果不为空,按默认正则模板直接替换代买实现:/** * @description: * @param {string} name:传入的键名,参数名 * @param {any} value:传入的值 *

2021-12-29 09:33:03 2470

原创 leetCode -爬楼梯

//假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?// 假设n = 1 O==[===========> 1种 0 1 0// 假设n = 2 O==[===========> 1+1 2 2种 1 2 1// 假设n = 3 O==[===========> 1+1+1 2+1 1+2 3种 1 3 2// 假设n = 4

2021-12-27 11:31:42 2741

原创 leetCode - 算术平方根

function mySqrt(x: number): number { // if (x === 0) return 0 // if(x === 1) return 1 // for (let i: number = 1; i <= x / 2; i++) { // if (i * i <= x && x < (i + 1) * (i + 1)) { // return i // }

2021-12-24 16:44:08 320

原创 leetCode - 二进制求和

function addBinary(a: string, b: string): string { // 解法会溢出 // const la = parseInt(a, 2) // const lb = parseInt(b, 2) // const total = (la + lb).toString(2) // return total let l1: string = a.length >= b.length ? a : b let l2: string =

2021-12-24 15:35:17 574

原创 leetCode - 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

// 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。function plusOne(digits) { for (let i = digits.length - 1; i >= 0; i--) { if (digits[i] !== 9) { digits[i] += 1 for (let j = i + 1; j < digits.length; j++) { digits[j] = 0 }

2021-12-21 13:25:35 338

原创 leetCode - 最后一个单词的长度

// 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。function lengthOfLastWord(s: string): number { return s.trim().split(' ')[s.trim().split(' ').length - 1].length};...

2021-12-20 17:47:00 57

原创 leetCode - 最大子数组和

function maxSubArray(nums: number[]): number { if (nums.length === 1) return nums[0] let max_end: number = nums[0] let max_current: number = nums[0] for (let i: number = 1; i < nums.length; i++) { // 拿到第一个最大字串,就是nums[0]和nums[1]的和来做

2021-12-20 17:12:05 81

原创 leetCode - 搜索插入位置

if (!nums.length) return 0 let i: number = 0 while (i < nums.length) { if (nums[i] === target) return i if (nums[i] > target) return i if (target > nums[nums.length - 1]) return nums.length i+

2021-12-20 13:51:55 161

原创 leetCode - 移除数组中的指定元素

function removeElement(nums:nums[], val:numer):numer { if (nums.length === 0) { return 0 } let loop:numer = 0 while (loop < nums.length) { if (nums[loop] === val) { nums.splice(loop, 1) } else { loop++ } } return

2021-12-20 13:29:14 77

原创 leetCode -实现一个strStr(),返回一个字符串在另一个字符串中出现的位置

function strStr(haystack, needle) { if (needle === '') return 0 // js已有轮子 // return haystack.indexOf(needle) // 相当于自己实现一个indexOf方法 for (let i = 0; i < haystack.length; i++) { if (haystack[i] === needle[0]) { if (haystack.slice(i, i

2021-12-20 13:20:29 259

原创 leetCode - 有效的括号

说实话这个题还是觉得有问题,看了官方思路写出来了,function isValid(s: string): boolean { // 先判断字符串的length 不为偶数返回false if (s.length % 2 !== 0) return false const strMap = new Map([ [']', '['], [')', '('], ['}', '{'], ]) const stk: string[] = [] for (let i of s) { if

2021-12-09 15:27:29 2956

原创 couldn‘t find the plugin “eslint-plugin-jsdoc“. This can happen for a couple different reasons

egg在做单元测试的时候报错,找不到eslint-plugin-jsdoc这个包执行 npm ls eslint-plugin-jsdoc,查看依赖这里[email protected]依赖于它,找不到我们就装一下它npm i eslint-plugin-jsdoc -D重新测试

2021-11-23 17:24:42 838

原创 leetCode -- 最长公共前缀

没有想到什么好的办法 就是直接暴力循环,先找到最短子串,在找子串function longestCommonPrefix(strs: string[]): string { let focu:string = '' let str:string = strs[0] if (!strs.length) return focu // 先找最短子串 for (let i = 1; i < strs.length; i++) { str = strs[i].length <

2021-11-19 16:33:08 63

原创 NPM 发布自己的npm包

1、首先访问npm官网,并登录,没有账号需先注册2、创建好自己的包配置,查看版本3、创建一个空文件夹,执行npm init -y 初始化,并配置好自己的最基础的webpack.config.js4、执行打包5、在终端输入命令npm config get registry一定要确保输出路径地址是https://registry.npmjs.org/如果是淘宝源的话,是无法上传成功的6、然后执行npm adduser,输入自己的账号密码密码是不显示输入的 输完直接按回车就行输出这

2021-11-18 14:44:30 202

原创 node版本过高,导致sass-loader,node-sass安装出现问题

版本问题没有办法,只有靠版本解决: "node-sass": "^6.0.1", "sass-loader": "^10.0.1",将原来的node_modulse删除,将package.json文件替换成这两个版本重新 npm i

2021-11-10 13:02:17 397

原创 leetCode - 罗马数字转整数

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况

2021-11-08 10:45:03 76

原创 vue+ts获取package.json中version版本

第一步:在shims-vue.d.ts配置文件中写入:declare module '*.json' { const value: any; export default value;}第二步:在需要引入底地方:import configs from '../../package.json'自己根据自己的相对路径去查找

2021-11-04 13:22:57 955

原创 caniuse-lite is outdated. Please run: npx browserslist@latest --update-db

最近手里三个vue项目都出现:这个踢死,网上查了下这个是啥,重新认识caniuse博主详细解释了一些,想了解的可以看看,解决方案:npm i caniuse-lite@latest直接更新最新版 caniuse-lite,如果没有生效,建议node_modules下面的caniuse-lite包,重新执行npm i caniuse-lite@latest npm i autoprefixer@latest npm i caniuse-lite browserslist@latest

2021-11-04 09:48:52 2276

原创 leetCode - 回文数

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121 输出:true示例 2:输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入:x = 10 输出:false 解释:从右向左读, 为 01 。因此它不是一个回文数。示

2021-11-03 17:56:53 61

原创 leetCode - 整数翻转

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123 输出:321示例 2:输入:x = -123 输出:-321示例 3:输入:x = 120 输出:21示例 4:输入:x = 0 输出:0提示:-231 <= x <= 231 - 1解法1:functi

2021-11-03 13:08:56 216

原创 leetCode - 两数之和,返回下标

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] ==9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], target

2021-11-01 11:56:34 133

原创 leetCode - 575分糖果

leetCode – 575分糖果给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。示例1:输入: candies = [1,1,2,2,3,3]输出: 3解析: 一共有三种种类的糖果,每一种都有两个。最优分配方案:妹妹获得[1,2,3],弟弟也获得[1,2,3]。这样使妹妹获得糖果的种类数最多。示例2:输入: candies = [1,1,2,3]输出: 2解析:

2021-11-01 10:05:46 77

原创 vue3.0项目+typescript+vuex4+vue-router+i18n多语言+axios+eslint项目模板

项目框架vue3.0+typescript+vuex4+vue-router+i18n多语言+axios+eslint+element+包含一些验证方法库,所有公共插件提取封装,开发—测试等环境变量配置

2021-10-22 11:33:48 185

原创 解决element-plus的menu菜单组件无限极多次使用,切换一级菜单后无法高亮问题

1 页面结构顶部为一级菜单,左侧为无限极二级菜单问题:当切换一级菜单之后,菜单只有在刷新之后才能有高亮属性,检查获取到的route.path是没有问题的,就是渲染不上,所以把问题定位到父组件与 子组件的渲染和传值问题上,解决思路1、在子组件上加一个v-if控制`<LeftBar v-if="show" :menuList="LeftBarMenu" />2、监听父组件所传值的改变 watch( () => state.LeftBarMenu,

2021-05-06 15:41:35 2788

原创 vue3.0+ts实现表单验证及解决vue-i18n表单验证rules自动触发问题

解决vue-i18n表单验证rules自动触发问题技术栈 vue3.0+ts+element-plus问题就像下面图片所展示,我们每次点击右侧语言切换的时候,都会触发表单的rules,我们没有动表单,还是会出现验证信息.技术栈 vue3.0+ts+element-plus问题就像下面图片所展示,我们每次点击右侧语言切换的时候,都会触发表单的rules,我们没有动表单,还是会出现验证信息.1、因为我们要实现如果在验证的中途切换的语言的时候,error message也会跟着触发,所以我们将代码写到com

2021-04-08 17:49:59 4202

原创 element-ui菜单组件嵌套二层路由导致当前菜单高亮的问题

二级路由导致菜单高亮失效首先 如果页面没有添加二级路由或者多级路由菜单得话,可以直接使用官网给的方法 :default-active="$route.path"就没有问题了但是当存在多层路由嵌套得时候,建议将路由写在计算属性里面 :default-active="defaultActive"其中计算属性里面写入需要或企业得路由, computed: { //获取当前...

2019-06-15 23:47:29 4157 1

原创 react create-react-app npm start 报错问题

react create-react-app npm start 的报错问题使用react脚手架的时候报错:Don't try to install it manually: your package manager does it automatically.However, a different version of babel-loader was detected higher u...

2019-03-18 23:53:57 4094

原创 babel7.×版本配置问题

暂时空白

2019-03-04 19:46:37 5019

原创 记录JSX语法配置的两套包和配置文件

babel插件安装+ cnpm i babel-core babel-loader babel-plugin-transform-runtime -D+ cnpm i babel-preset-env babel-preset-stage-0 babel-preset-react -D配置配置.babelrc文件配置webpack.config.js文件...

2019-03-04 15:36:52 676

原创 关于表格表头与表格数据体的对齐问题

解决表格表头与表格数据体的对齐问题最近在项目遇到了表格的表头与表格数据体无法对齐的问题,找了很多办法,都没实际的作用,研究了一下,在这里记录一下:(所有样式代码均只贴关键部分)首先表格样式table{ table-layout:fixed //其实这里也可以不加 只是为了防止一些特殊情况}tr{ display:flex}td,th{ width:××% //具体数值根...

2019-02-27 22:39:40 3005

原创 npm常用命令

在node中使用npm的一些常用命令npm其实也是有版本的概念的,其中npm --version (或简写npm -v) ////查看版本npm install --global npm ////升级npm下面总结一些npm常用命令以及意义npm init (npm init -y) //这里是初始化package.json这个文件,其中括号里面的操作是跳过package.jso...

2019-01-17 15:15:05 108

原创 将请求参数拼接到地址栏

实现表格数据导出时,试用url方式跳转时,如何将请求参数拼接到请求地址栏首先列举一个数据对象selectData:{ name: &quot;&quot;, age: &quot;&quot;, tel: &quot;&quot;,}类似这样一个数据对象,采用方法let param = qs.stringify(this.selectData);this.selectData是vue里面获取自定义数据的方法,当然主要讲的是qs.str..

2019-01-11 11:35:06 5958

原创 node.js搭建一个简易的仿apache服务器

node.js搭建一个简易的仿apache服务器node环境当然,开始之前,我们首先还是需要配置好自己的Node环境,node的环境配置网上还是有许多教程的,没有的小伙伴阔以参考这里,有详细的配置与教程。引入http模块并创建服务,因为在apache服务中我们使用的是他自己的www目录,所以在这里为了读取到我们自定义的www目录,还得引入文件模块let http = require('h...

2018-12-26 14:13:59 775

ps的一些素材及教程,工具整理,含破解文件

里面是百度网盘的分享链接,其中包含ps教程,基础入门,工具,破解文件,以及一些素材

2019-02-28

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

TA关注的人

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