摘要:
在字典(或映射)中,用【键/值】对的形式来存储数据。 // 如果item变量是一个对象的话,需要实现toString方法,否则会导致出现异常的输出结果,如"[object Object]"。 function defaultToString(item){ if(item null){ return 阅读全文
摘要:
集合是由一组无序且唯一(即不能重复)的项组成的。 class Set { constructor(){ this.items = {} } } Set.prototype.has = function(element){ // return element in this.items return 阅读全文
摘要:
递归:能够直接或间接调用自身的方法或函数,就是递归. 每一个递归函数都必须有基线条件,即一个不再递归调用的条件(停止点),以防止无限递归。 JavaScript调用栈大小的限制 如果忘记加上用以停止函数递归调用的基线条件,递归并不会无限地执行下去,浏览器会抛出错误,也就是所谓的栈溢出错误(stack 阅读全文
摘要:
树数据结构:树是一种分层数据的数据模型 树数据结构理解:位于树顶部的节点叫做根节点.它没有父节点.树中的每个元素都叫做节点,节点分为内部节点和外部节点.至少有一个子节点的节点称为内部节点.没有子元素的节点称为外部节点或叶节点. 二叉树和二叉搜索树:二叉树中的节点最多只能有两个子节点:一个是左侧子节点 阅读全文
摘要:
队列数据是遵循先进先出(FIFO)原则的一组有序的项。队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。 class Queue { constructor(){ this.count = 0 this.lowestCount = 0 this.items = {} } } 阅读全文
摘要:
栈是一种遵从后进先出(LIFO)原则的有序集合。新添加或待删除的元素都保存在栈的同一端,称为栈顶,另一端称为栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。 class Stack { constructor(){ this.items = [] } } Stack.prototype.push 阅读全文
摘要:
在数组开头插入元素 Array.prototype.insertFirstPosition = function(value){ for(let i = this.length;i > 0;i--){ this[i] = this[i - 1] } this[0] = value } 从数组开头删除 阅读全文
摘要:
给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。 function setZeroes(matrix) { let x = [],y = [] for(let i = 0;i < matrix.length;i++){ let item = m 阅读全文
摘要:
Function.prototype.myBind = function(obj,...rest){ let that = this let bound = function(...args){ let params = [...rest,...args] that.apply(this.const 阅读全文
摘要:
this到底是什么? this是在运行时绑定的,并不是在编写时绑定,它的上下文取决于函数调用时的各种条件。this的绑定和函数声明的位置没有任何关系,只取决于函数的调用方式。 当一个函数被调用时,会创建一个记录(有时候也称为执行上下文)。这个记录会包含函数函数在哪里被调用(调用栈)、函数的调用方法、 阅读全文