JS数据结构及ES6
主要总结了,js常见的一些知识,闭包,Promise,面试知识点,数据结构
安静宅男爱蓝猫
我知道一切都不容易,但是总会输给努力
展开
-
身份证验证(工具类ES6)
说明: 函数入口必须有值,可以是Number类型,也可以是String类型 。(其他类型报错)flag参数选填:默认是false,返回的是一个布尔值,当验证成功的时候,返回的是true。验证失败,抛出异常。当flag的参数是true的时候,返回的是IDCard的值,String类型。相当于将数据过滤验证了一遍,当有大量数据是,可以走这一个API。/** * 校验身份证是否合格的方法 * @param Card * @returns {boolean} */export default f.原创 2020-11-08 23:47:35 · 369 阅读 · 0 评论 -
对date类的封装(工具类)
在实际开发中,如果用到日期类的话,我们需要配置new date()的方法。下面是我封装的日期方法。/** * 对日期类的封装 * author:木木 * @type {Date} *//** * mode:返回年月日和时间 和格式 */export default function dateWei(flag=false,data=false) { let date = new Date(); //定义日期的变量 const fullYear = date.getFu原创 2020-11-08 14:52:43 · 477 阅读 · 0 评论 -
javascript实现简单电话薄
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>电话.原创 2020-09-25 19:40:06 · 431 阅读 · 0 评论 -
JS实现选择排序和快速排序
// 快速排序function quickSort(arr) { if (arr.length <= 1) { return arr; } //设置哨兵的位置 let mid = Math.floor(arr.length / 2); let midValue = arr.splice(mid, 1)[0]; midValue //定义两个左右数组 let leftArr = []; let rightArr =原创 2020-09-18 21:04:10 · 210 阅读 · 0 评论 -
二叉搜索树的js实现
二叉树的数据结构的重点内容,而二叉搜索树又是二叉树的重点,地位仅次于红黑树下面是js实现的具体方法,插入 先中后遍历,求最值,删除(最难,没有完善,求大佬)。function BinarySearchTree() { function Node(key) { this.key = key; this.left = null; this.right = null; } //属性 this.root = null原创 2020-07-23 10:07:24 · 201 阅读 · 0 评论 -
树、二叉树的介绍
定义二叉树(binary tree)是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。二叉树的递归定义为:二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树 。### 基本形态二叉树是递归定义的,其结点有左右子树之分,逻辑上二叉树有五种基本形态: [3]1、空二叉树——如图 ;2、只有一个根结点的二叉树——如图 ;3、只有左子树——如图 ;4、只有右子树——如图 ;5、完全二叉树——如原创 2020-07-16 22:29:42 · 469 阅读 · 0 评论 -
js的12技巧
将NodeList转换成数组如果你运行document.querySelectorAll(“p”)函数时,它可能返回DOM元素的数组,也就是NodeList对象。但这个对象不具有数组的函数功能,比如sort()、reduce()、map()、filter()等。为了让这些原生的数组函数功能也能用于其上面,需要将节点列表转换成数组。可以使用[].slice.call(elements)来实现:var elements = document.querySelectorAll("p"); // NodeLis转载 2020-07-07 09:19:54 · 100 阅读 · 0 评论 -
算法设计与分析-----分治法(js实现)
分治法特征该问题的规模缩小到一定的程度就可以容易地解决;该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质利用该问题分解出的子问题的解可以合并为该问题的解;该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。能否利用分治法完全取决于问题是否具有这条特征,如果具备了前两条特征,而不具备第三条特征,则可以考虑贪心算法或动态规划。伪代码divide-and-conquer(P)if(|P|<= n0) adhoc(P); //解决小规模的问题原创 2020-07-04 21:50:38 · 529 阅读 · 0 评论 -
asnyc和Promise的总结
写法不同ES5正常写法getAjax(url,()=>{})Promise写法get(url).then(()=>{}) async awaitasync function(){ let res = await get(url) }总结:ES5写法与Promise写法,主要区别在写法的不同,可以让回调函数,划分出去在.then的函数 中去执行,使得代码更加的另外,也可以将两个不同的参数,可以划分开来写。async 和Promis原创 2020-06-30 12:47:34 · 401 阅读 · 0 评论 -
前端开发知识点小总
变量声明 var 声明一个变量,可赋一个初始值 let 声明一个块级作用域的局部变量,可赋一个初始值 const 声明一个块作用域的制度命名的变量 变量的名字又叫做“标识符”,`必须以字母、下划线(_)、或者$开头,大小写敏感` 若没有为变量赋初始值,则默认为undefined 若没有声明变量而直接使用,抛出ReferenceError错误。 当变量值为undefined时,布尔值的环境是false 当变量值为null 时,布尔值环境为false。数据类型Boolean原创 2020-06-21 12:07:14 · 298 阅读 · 0 评论 -
函数节流与函数防抖
导语函数节流与函数防抖的面试和实际开发中一个常问的问题。在此做一下笔记。函数节流(节流阀)函数节流: 可以使一些频繁触发的函数事件受到限制,可以使函数在一定的时间之内或者满足某些条件之后再去执行。通俗来说就是:让一个函数不要执行得太频繁,减少一些过快的调用来节流。核心内容 :让一个函数不要执行得太频繁,减少一些过快的调用来节流。更加立体的举例就是:比如只有一个厕所,但一个人正在上厕所,在他在方便时关上厕所门,其他人再急也没有用,因为厕所上着一把锁,只有这个人上完了,出来了,锁就开了,其他人再去厕原创 2020-06-20 22:35:36 · 120 阅读 · 0 评论 -
JavaScript作用域
1.作用域作用域只一个变量的作用的范围在js中一共有两个作用域 1.全局作用域直接编写在script标签中的JS代码,都在全局作用域全局作用域在页面打开时创建,在页面关闭时销毁在全局作用域中有一个全局对象window它代表的是一个浏览器的窗口,它由浏览器创建我们可以直接使用- - -在全局作用域中:创建的变量都会作为window对象的属性保存创建的函数都会作为window对象的方法保2.函数作用域每调用一次函数就会创建一个新的函数作用域,他们之间原创 2020-06-03 18:49:33 · 212 阅读 · 0 评论 -
前端高频的三大排序——冒泡、插入、快速
// 冒泡排序/* 思想: 让数组中的当前项,和后一项进行比较*/function bubblesort(arr){ let temp = []; // 外层循坏控制比较的轮数 for (var i = 0; i <arr.length; i++) { //里层循环控制每-轮比较的次数 for (var j= 0; j< arr.length-i; j++) { if(arr[j]>arr[j+1]){ //当前项大于后一项原创 2020-05-30 11:52:41 · 190 阅读 · 0 评论 -
正则表达式的应用
正则表达式定义和使用var patt1 = new RegExp("hello");var patt2 = /world/;test方法test()方法检索字符串中的指定值,返回值是true或者falsevar pat = /my/;var attr = 'this is my gril friend'console.log(par.test(attr));exec方法exec(方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回null。var pat原创 2020-05-26 15:46:47 · 360 阅读 · 1 评论 -
闭包
怎样理解闭包?理解一: 闭包是嵌套的内部函数(绝大部分人)理解二: 包含被引用变量(函数)的对象(极少数人)注意: 闭包存在于嵌套的内部函数中如何产生闭包?当一个嵌套的内部(子)函数引用了嵌套的外部(父)函数的变量(函数)时, 就产生了闭包当内部的函数引用了外部函数的变量,那么这个变量的生存周期就发生了变化产生闭包的条件?函数嵌套内部函数引用了外部函数的数据(变量/函数)闭包的作用使用函数内部的变量在函数执行完后, 仍然存活在内存中(延长了局部变量的生命周期)原创 2020-05-25 12:43:16 · 114 阅读 · 0 评论 -
ECMAscript 6笔记
ECMAscript 6ECMAscript 6ECMAScript 6.0 (以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月 正式发布了。Ecmascript是JavaScript 语言的标注规范JavaScript是Ecmascript 规范的具体实现具体实现取决于各大浏览器厂商的支持进度Ecmascript 6也被称作Ecmascript 20...原创 2020-05-01 16:20:29 · 189 阅读 · 0 评论 -
JQ源码分析部分笔记
总体构架// 匿名子执行函数(function() { (21,94) 定义一些变量和函数 jQuery = function() {}; (96,283) 给jq对象,添加属性和方法, (285, 347) extend: jQ的继承方法 (349, 817) jQuery.extend(): 拓展一些工具方法,静态 (877,2856) Sizzle...原创 2020-04-30 18:13:26 · 236 阅读 · 0 评论 -
浅谈JavaScript封装栈与队列
今天我们总结一下栈与队列在JavaScript中的实现首先,栈是一种遵从先进后出的有序集合,新添加的或者待删除的元素保存到栈的末尾,叫栈顶,另一端就是栈顶栈的创建function Stack(){ var items = [];//定义一个数组 this.push = function(ele){ return items.push(ele); } this.peek = fun...原创 2020-04-11 11:27:54 · 135 阅读 · 0 评论 -
JavaScript高级一
1.面向过程与面向对象1.1面向过程 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以了。 1.2面向对象 面向对象是把事务分解成为一个个对象,然后由对象之间分工与合作。 1.3面向过程与面向对象对比 面向过程 面向对象 优点 性能比面向对象高,适合跟硬件联系很紧密的东西,例如单...原创 2020-03-28 17:56:34 · 108 阅读 · 0 评论