阅读提示: 每个方法都有相应的描述、语法、参数、返回值、注意项(可选)、例子(可选)。 语法中的
[]
里面中的内容表示参数为可选参数。
Array.from()
描述:从一个类似数组或可迭代对象中创建一个新的数组实例。
语法:
new_array = Array.from(arrayLike[, callback(element[, index[, array]])[, thisArg]]);
原创大约 23 分钟
阅读提示: 每个方法都有相应的描述、语法、参数、返回值、注意项(可选)、例子(可选)。 语法中的
[]
里面中的内容表示参数为可选参数。
Array.from()
描述:从一个类似数组或可迭代对象中创建一个新的数组实例。
语法:
new_array = Array.from(arrayLike[, callback(element[, index[, array]])[, thisArg]]);
字典是一种以 键值对 形式存数数据的数据结构,javaScript
中的 Object
类就是以字典的形式设置的,所以使用 Object
类本身的特性实现字典 Dictionary
类。
列表 | 属性或方法 | 描述 |
---|---|---|
add | 方法 | add(key, value) 向字典中添加 键值对 |
find | 方法 | find(key) 从字典中查找 key 键对应的值,找不到则返回 undefined |
remove | 方法 | remove(key) 从字典中删除 key 键 |
getKeys | 方法 | getKeys() 获取字典中的所有 key |
getKeysSort | 方法 | getKeysSort() 获取字典中的所有 key ,并使用 sort 排序 |
count | 方法 | count() 返回字典中 键值对 的个数 |
showAll | 方法 | showAll() 将字典中的所有 键值对 转换为字符串,以 , 分隔 |
showAllSort | 方法 | showAllSort() 将字典中的所有键按照 sort 排序,之后将所有 键值对 转换为字符串,以 , 分隔 |
clear | 方法 | clear() 清空字典 |
链表是由一组节点组成的集合。
每个节点都使用一个对象的引用指向它的后驱,指向另一个节点的引用叫做链。在链表的最前面有一个特殊节点,叫做头节点。
向链表中插入一个节点,需要修改它前面节点(前驱)的链,使其指向新加入的节点,新加入的节点的链指向原来前驱指向的节点。
从链表中删除一个节点,将待删除节点的前驱节点的链指向待删除节点的后驱节点,同时将待删除节点的链指向 null
。
列表 | 属性或方法 | 描述 |
---|---|---|
find | 方法 | find(item) 从链表头节点向后查找某个节点,查找到节点则返回对应节点,查找不到则返回 null |
findPrev | 方法 | findPrev(item) 从链表头节点向后查找某个节点的后驱为 item ,查找到节点则返回对应节点,查找不到则返回 null |
insert | 方法 | insert(newElement, item) 向链表中的 item 节点之后插入 newElement 节点,成功返回 true ,失败返回 false |
remove | 方法 | remove(item) 从链表中删除 item 节点,成功返回 true ,失败返回 false |
display | 方法 | 返回链表中所有节点 element 属性组成的数组 |
displayString | 方法 | 返回链表中所有节点 element 属性组成的字符串,以 , 分隔 |
length | 方法 | 返回链表中节点个数 |
show | 方法 | 返回链表中按顺序第 pos 个节点,从 0 开始 |
advance | 方法 | advance(number) 按照链表顺序,继续向后移动 number 个节点,最多移动到链表最后一个节点 |
back | 方法 | back(number) 按照链表顺序,反方向向前移动 number 个节点,最多移动到链表的第一个节点(非链表的头节点) |
队列是一种特殊的列表,队列只能在队尾插入元素,在队首删除元素。队列用于存储按顺序排列的数据,先进先出。
接收的参数为数组类型。
栈的抽象数据类型定义
列表 | 属性或方法 | 描述 |
---|---|---|
enqueue | 方法 | 向队尾加入一个元素 |
dequeue | 方法 | 删除队首的元素 |
front | 方法 | 读取队首元素 |
back | 方法 | 读取队尾元素 |
toString | 方法 | 返回队列的字符串形式 |
clear | 方法 | 清空队列 |
length | 方法 | 返回队列内元素的个数 |
empty | 方法 | 队列是否为空 |
栈是一种特殊的列表,栈内的元素只能通过栈顶访问,栈是一种后入先出的数据结构。
接收的参数为数组类型。
栈的抽象数据类型定义
列表 | 属性或方法 | 描述 |
---|---|---|
top | 属性 | 记录栈顶元素的位置,同时也为了标记哪里可以加入新元素,当向栈内压入元素时,top 增大,从栈内弹出元素时,top 减小 |
push | 方法 | 向栈内压入元素 |
pop | 方法 | 从栈内弹出元素 |
peek | 方法 | 返回栈顶元素,该元素依然存在栈内 |
toString | 方法 | 返回栈的字符串形式 |
clear | 方法 | 清空栈 |
length | 方法 | 返回栈内元素的个数 |
列表是一组有序的数据,列表中的每个数据项称为元素。本篇文章中列表提供两种实现方式,一种是 ES5 构造函数,一种是 ES6 Class
。
接收的参数为数组类型。
列表的抽象数据类型定义
列表 | 属性或方法 | 描述 |
---|---|---|
listSize | 属性 | 列表的元素个数 |
pos | 属性 | 列表的当前位置 |
find | 方法 | 在列表中查找某一元素在列表中的位置(从0开始计数),未找到则返回 -1 |
contains | 方法 | 判断给定值是否在列表中,返回 true/false |
length | 方法 | 列表中元素的个数,返回值为 number |
clear | 方法 | 清空列表中的所有元素 |
toString | 方法 | 返回列表的字符串形式 |
getElement | 方法 | 返回当前位置的元素 |
insert | 方法 | 向列表中插入一个元素, insert(element, after) ,element 表示要插入的元素,after 表示在 after 元素之后插入,返回 true/false ,true 表示插入成功,false 插入失败 |
append | 方法 | 在列表的末尾添加新元素,append(element) ,element 表示要添加的新元素 |
remove | 方法 | 从列表中删除元素,remove(element) ,element 表示要删除的元素,,返回 true/false ,true 表示删除成功,false 删除失败 |
front | 方法 | 将列表的当前位置移动到第一个元素 |
end | 方法 | 将列表的当前位置移动到最后一个元素 |
prev | 方法 | 将当前位置前移一位,如果当前 pos === 0 ,执行 prev() 方法之后依然是 pos 为 0 |
next | 方法 | 将当前位置后移一位,如果当前 pos === this.listSize - 1 ,执行 next() 方法之后依然是 pos 为 this.listSize - 1 |
hasPrev | 方法 | 判断是否存在前一位 |
hasNext | 方法 | 判断是否存在后一位 |
currPos | 方法 | 返回列表的当前位置,返回 number |
moveTo | 方法 | 将当前位置移动到指定位置,在 0 ~ this.listSize -1 范围内成功移动时返回 true ,当大于 this.listSize - 1 或者小于 0 时,返回 false |
call
Function.prototype.myCall = function(context = window, ...args) {
if (this === Function.prototype) {
return undefined // 用于防止 Function.prototype.myCall() 直接调用
}
context = context || window // 用于防止传入 null
const fn = Symbol()
context[fn] = this
const result = context[fn](...args)
delete context[fn]
return result
}