03 2022 档案
数据结构篇(7)排序二叉树及其三种遍历 代码
摘要:/** * parent: 双亲节点 * left: 左子节点 * right: 右子节点 */ interface TreeNode { left: TreeNode | null, right: TreeNode | null, data: any, count: number } class
数据结构篇(6)二叉树的三种遍历
摘要:遍历 二叉树的遍历主要有三种: (1)先(根)序遍历(根左右) (2)中(根)序遍历(左根右) (3)后(根)序遍历(左右根) 举个栗子: 先(根)序遍历(根左右):A B D H E I C F J K G 中(根)序遍历(左根右) : H D B E I A J F K C G 后(根)序遍历(
数据结构篇(5) 二叉树的介绍
摘要:二叉树 简单地理解,满足以下两个条件的树就是二叉树: 本身是有序树; 树中包含的各个节点的度不能超过 2,即只能是 0、1 或者 2; 例如,图 1a) 就是一棵二叉树,而图 1b) 则不是。 二叉树的性质 经过前人的总结,二叉树具有以下几个性质: 二叉树中,第 i 层最多有 2i-1 个结点。 如
数据结构篇(4) 实现双向循环链表
摘要://双向循环链表 class DbCirList extends DbList { constructor() { super(); this.head.next = this.head; this.head.prev = this.head; } /** * * @param item //插入的
算法篇(2) 递归及其相关问题解决
摘要:#反转字符串 function reverseStr(str) { if (str.length 1) { console.log(str); return; } console.log(str.slice(-1)); str = str.slice(0, str.length - 1); reve
数据结构篇(3)ts 实现双向链表
摘要:如今终于到了双向链表了,此前在Node结构中的prev指针终于派上了用场。由于双向链表多了一个前向指针,所以有些操作和单向链表比较起来反而更加的简单。 class DbList extends CirListNode { constructor() { super(); } /** * * @par
数据结构篇(2) ts实现单循环链表
摘要:JS的class可以通过extends关键字实现类似其他语言的继承效果,比起使用一个extends关键字,在es5中实现继承要复杂一些,可以通过修改原型链的方法实现继承,让一个原型对象等于另一个类型的实例等等,虽然也能够实现,但是不够直观。 constructor()方法中的super()表示调用父
数据结构篇(2) ts实现单链表
摘要:interface NodeItem { prev: NodeItem | null next: NodeItem | null data: any } class NodeItem { prev: NodeItem | null = null next: NodeItem | null = nul
数据结构篇(1) ts实现栈的基本操作和解决相关问题
摘要:interface Stack { _items: any push(element: any): void pop(): any top(): any size(): any isEmpty(): any clear(): any } //用Symbol添加私有属性 class Stack { _
js归并排序实现
摘要:let arr = [3,4,2,8,1,1,2,2,3,3,4,5]; const merge = function(L,M,R) { let arr2=[]; let i=0; let p1 = L; let p2 = M+1; while(p1<=M&&p2<=R) { arr2[i++] =
算法篇(1) KMP JS实现最优查找子串
摘要:var strStr = function (haystack, needle) { let i=0, j = 0; let length = haystack.length; let next = getNext(needle, new Array(needle.length).fill(0));
vue3 数据可视化项目
摘要:可视化面板介绍 应对现在数据可视化的趋势,越来越多企业需要在很多场景(营销数据,生产数据,用户数据)下使用,可视化图表来展示体现数据,让数据更加直观,数据特点更加突出。 01-使用技术 完成该项目需要具备以下知识: div + css 布局 flex 布局 Less 原生js + jquery
js call与bind和apply的区别
摘要:介绍 在JS中,这三者都是用来改变函数的this对象的指向的,他们有什么样的区别呢。 在说区别之前还是先总结一下三者的相似之处: 1、都是用来改变函数的this对象的指向的。 2、第一个参数都是this要指向的对象。 3、都可以利用后续参数传参。 那么他们的区别在哪里的,先看一个例子。 var xw
Es5 - 11 详解
摘要:一、ES简介 ECMAScript,欧洲计算机制造商协会 ES是一种标准,而JS是ES的一种实现 每年的ES版本中都会引入新特性 二、NRM的安装与使用 NRM是切换源的工具 ES6 2.1安装 window命令: npm install -g nrm mac下命令: sudo npm instal
移动端屏幕适配(rem+js)
摘要:什么是移动端适配 在制作webapp时,一个很关键的问题就是适配各种机型不同屏幕的大小,让每种机型上的布局看起来都尽量一样。 也就是说用同一套代码在不同分辨率的手机上跑时,页面元素间的间距、留白,以及图片大小会随着变化,在比例上跟设计稿一致。 没有实现适配时,不同屏幕大小中的高度、宽度、字体大小是一
手写Promise
摘要:用于理解promise原理 function Promise(executor) { //初始化Promise状态为pending this.PromiseState = "pending"; //初始化返回结果为Null this.PromiseResult = null; //初始化回调数组 t
typeScript学习笔记
摘要:##初识TypeScript TypeScript 是 JavaScript 的一个超集,主要提供了类型系统和对 ES6+ 的支持,它由 Microsoft 开发,代码开源于 GitHub上 ##安装TypeScript 命令行运行如下命令,全局安装TypeScript: npm install -
Vue3 setup详解
摘要:setup执行的时机 在beforeCreate之前执行(一次),此时组件对象还没创建; this是undefined,不能通过this来访问data/computed/methods/props; 其实所有的composition API相关回调函数中也都不可以; setup的返回值 一般都返回一
vue2响应式原理与vue3响应式原理对比
摘要:##VUE2.0 核心 对象:通过Object.defineProtytype()对对象的已有属性值的读取和修改进行劫持 数组:通过重写数组更新数组一系列更新元素的方法来实现元素的修改的劫持 Object.defineProperty(data,'count',{ get() {}, set() {
封装axios在项目中使用
摘要:import store from '@/store/index' import { Loading,Message,MessageBox } from 'element-ui' import router from '@/router/index' import {auth} from '@/ut
vue动态路由实现原理 addRoute
摘要:vue新版router.addRoute基础用法 新版Vue Router中用router.addRoute来替代原有的router.addRoutes来动态添加路由、子路由 在添加子路由的时候 比如原现有路由 const routes = [ { path: '/', name: 'Login',
vue项目中cookie的使用
摘要:#Vue使用cookie和session ##1:cookie和session 为了防止数据运输或存储终端,特地设置了cookie和session,他们其实都是将数据存储当地。 cookie数据保存在客户端,session数据保存在服务器端 所以一般session的使用会比cookie的使用会更加安
Elemnt ui 组件封装(table)
摘要:<template> <div class="table"> <el-table :data="tableData2" :border="tableConfig.border" style="min-width: 800px" :size="tableConfig.size" :cell-style
Elemnt ui 组件封装(form)
摘要:<template> <el-form class="form" :inline="formConfig.inline" :model="value" :label-width="formConfig.labelWidth" :rules="rules" :ref="refString" :size
js数组操作集合
摘要:###1. join() 功能:将数组中所有元素都转化为字符串并连接在一起。 ###2. reverse() 功能:将数组中的元素颠倒顺序。 ###3. concat() 功能:数组拼接的功能 ,返回新数组,原数组不受影响。 ###4. slice() 截取数组生成新数组,原数组不受影响。 返回的数
js字符串操作方法集合
摘要:##1.字符方法: str.charAt(): 可以访问字符串中特定的字符,可以接受0至字符串长度-1的数字作为参数,返回该位置下的字符,如果参数超出该范围,返回空字符串,如果没有参数,返回位置为0的字符; str.charCodeAt(): 和charAt()用法一样,不同的是charCodeAt
echarts基本使用与注意事项
摘要:npm 安装echarts npm install echarts -D 使用流程 #1. 引入echarts,并配置成全局方法 vue2 import * as echarts from 'echarts'; Vue.prototype.$echarts = echarts ##vue3 impo
vue-cli4 vue-config.js配置及其备注
摘要:// vue.config.js const path = require('path'); const CompressionWebpackPlugin = require("compression-webpack-plugin"); // 开启gzip压缩, 按需引用 const product
Node爬取网站数据
摘要:npm安装cheerio和axios npm isntall cheerio npm install axios 利用cheerio抓取对应网站中的标签根据链接使用axios获取对应页面数据 const cheerio = require('cheerio'); //获取HTML文档的内容 cons
vue 配置scss流程
摘要:引入相关的node包 npm install --save style-loader sass-loader node-sass file-loader 安装好之后,为了可以在.vue和.scss中使用,需要在vue.config.js中配置对应的解析器 module.exports = { ent