12 2018 档案
摘要:数组乱序 顾名思义,数组乱序就是把数组存储的值的顺序都打乱。 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. 事件委托 当需要添加的事件过多时,可以使用 事件委托 ,而事件委托实际上利用了事件 冒泡 的特性。 使用事件委托还需了
阅读全文