排序算法 const Compare = { LESS_THAN: -1, BIGGER_THAN: 1, EQUALS: 0 }; function defaultCompare(a, b) { if (a === b) { return Compare.EQUALS; } else { return a < b ? Compare.LESS_THAN : Compare.BIGGER_THAN; } } function swap(arra...
flexible.js 移动端自适应方案
一、官方文档: flexible.js是手淘开发出的一个用来适配移动端的js框架。手淘框架的核心原理就是根据制不同的width给网页中html根节点设置不同的font-size,然后所有的px都用rem来代替,这样就实现了不同大小的屏幕都适应相同的样式了。其实它就是一个终端设备适配的解决方...
immer.js 一个不可变的、结构共享的数据结构是存储状态的绝佳范例
Immer 是 mobx 的作者写的一个 immutable 库,核心实现是利用 ES6 的 proxy,几乎以最小的成本实现了 js 的不可变数据结构,简单易用、体量小巧、设计巧妙,满足了我们对JS不可变数据结构的需求。 在日常开发中,数据的值引用,浅拷贝会修改原始数据困扰了众多开发者。一不...
Javascript数据结构之字典和散列表
字典 集合表示一组不重复的元素,字典和集合相似。但存储方式不同,字典是以【键,值】的形式存储元素,集合是以【值,值】的形式存储元素。 set(key, value):向字典中添加新元素。如果 Key 已经存在,那么存在的 value 会被新的值覆盖hasKey(key):如果某个键值存在于...
Javascript数据结构之集合
数据集合 集合是由一组无序且唯一的元素组成。 add(element):向集合中插入一个新元素delete(element):从集合移除一个元素has(element):判断元素是否存在集合中clear():移除集合中所有元素size():返回集合所包含的元素个数values():返回集合中所有值 class Set ...
Javascript数据结构之链表
链表数据结构 存储多个元素,数组或者列表是常用的数据结构。而这种数据结构有一个缺点:在大多数语言中数组的大小是固定的,从数组的起点或中间插入或移除值所成本很高,因为需要移动元素。Javascript 有 array 类的方法,很方便做这些事,但背后的实现是一样的。 链表...
Typescipt 入门教程之类型系统详解
类型注解 基本类型注解 let a: number; let b: string; let bool: boolean; a = '123' // 错误 b = 123 // 错误 c = 'false' // 错误 数组注解 let aArray: number[] let bArray: string[] let cArray: boolean[] aArray = ['1'] // 错误 bArra...
Javascript数据结构之队列和双端队列
队列数据结构 队列是遵循先进先出(FIFO)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。 Queue 队列类 enqueue(element(s)):插入一个新元素到队列项dequeue():移除队列的头元素,同时返回被移除的元素peek()...
Javascript数据结构之栈处理
栈数据结构 栈是一种遵从后进先出(LIFO)原则的有序集合。新添加或待删除的元素都保存在栈的同一端,称作栈顶,另一端叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。 栈在编辑语言的编译器和内存中保存变量、方法调用等,也被用于浏览器历史记录 基于数组的...
Typescipt 入门教程之编译类型系统边界设置及错误处理
类型系统边界设置 boolean 选项 选项为 boolean 的 compilerOptions,可以被指定为 tsconfig.json 下的 compilerOptions { "compilerOptions": { "someBooleanOption": true } } tsc -- someBooleanOption 这样所有这些选项的默认设置都是 false ...