随笔分类 - JavaScript
摘要:栈 先来看一道题 Leetcode 32 Longest Valid Parentheses (最长有效括号) 给定一个只包含 和 的字符串,找出最长的包含有效括号的子串的长度。 示例 1: 示例 2: 这道题可以用动态规划来做,也能用简洁明了的栈来解决。 什么是栈? 栈是一种先进后出(LIFO)的
阅读全文
摘要:数组乱序 顾名思义,数组乱序就是把数组存储的值的顺序都打乱。 Fisher–Yates shuffle 著名的 "洗牌算法" ,原理就是遍历数组元素,将当前元素与随机抽取的一个剩余元素进行交换。 下列表格遍历元素是从后往前: | 随机数范围 | 随机数 | 原始数据 | 结果 | | : : | :
阅读全文
摘要:数组扁平化 1. 什么是数组 扁平化 ? 数组扁平化就是将一个多层嵌套的数组 (Arrary) 转化为只有一层。 2. 递归实现 思路是先循环数组,遇到嵌套就递归。 javascript function flatten(arr) { let res = []; for (let i=0; i re
阅读全文
摘要:函数柯里化 1. 柯里化 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。 简单来说,就是固定一些参数,返回一个接受剩余参数的函数。 其实就是使用闭包返回一个延迟执行函数。 只看文字
阅读全文
摘要:防抖节流 1. 防抖 (debounce) 先来看看下面的代码: javascript //触发滚动事件,num 就加1 let num = 0; function incNum() { console.log('鼠标滚动中'); console.log( ); } window.addEventL
阅读全文
摘要:事件委托 1. 事件流 事件流描述的是从页面中接收事件的顺序。 JS高级程序设计(第3版) 规定的事件流有三个阶段:①事件 捕获 阶段、②处于 目标 阶段、③事件 冒泡 阶段 2. 事件委托 当需要添加的事件过多时,可以使用 事件委托 ,而事件委托实际上利用了事件 冒泡 的特性。 使用事件委托还需了
阅读全文
摘要:RegExp (包含ES2018新特性) 注意:本次所有代码都仅在Chrome 70中进行测试 1. 正则表达式是什么? 正则表达式是用于匹配字符串中字符组合的模式。(mdn) 简单来说,正则表达式是用来提取、捕获文本的。 2. 创建: 字面量: 构造函数: 3. 实例属性: 每个正则表达式实例都拥
阅读全文
摘要:1.XMLHttpRequest对象 创建XHR对象:let xhr = new XMLHttpRequest(); open():启动一个请求准备发送 open()接收3个参数:请求类型('GET'、'POST')、请求的URL、是否异步发送请求(true or false)。 send():发送
阅读全文

浙公网安备 33010602011771号