这是一个用Jquery的简单例子。
假设一个网页有N张表,就像本站的阅读者
频道一样,需要获取每张表的最后一个值,这时候要用到两个知识点:
- 遍历
- 数组栈
阅读者
频道在尾部的进度条x%
值获取实现就是基础在这段小脚本上。当然,在实现的过程中没有用到出入栈的概念。
|
|
这里用到了Javescript常用的数组方法:push()
在数组栈里出了push()
还有一个方法是pop()
,这两种方法都允许将数组当作栈来使用,用push()
会在数组的尾部添加一个或者多个元素,并返回数组新的长度。pop()
则正好相反,它的作用是删除数组的最后一个元素,减小数组的长度并返回它删除的值,在犀牛书里,特意描述了需要注意的部分:
两个方法都修改并替换原始数组而并非生成一个修改版的新数组。组合使用
push()
和pop()
能够用Javascript数组实现先后出栈。
关于“栈”
这里我们先补一下关于栈的知识点:
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
栈是限定仅在表头进行插入和删除操作的线性表。
就好比:一个死胡同,前面是“此路不通”,只有一个入口,如果一队人进入,只能队尾变对首出去。
在出栈
和入栈
的概念上,用图示大概是这样的:
用push()
和pop()
模拟一段代码:
|
|
结果是:
关于“队列”
这里另外一个知识点是关于队列的
队列在javascript里用的是unshift()
和pop()
方法。
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
就好比:现在这个胡同不是死胡同了,队伍可以直接通过。
模拟一段代码:
|
|
结果
unshift()
和shift()
在用法上实际上是一对的,他们非常类似push()
和pop()
,不一样的是前者是在数组头部而非尾部进行元素插入和删除操作。unshift()
在数组头部添加一个或多个元素,并将已存在的元素移动到更高索引的位置来获得足够的空间,最后返回数组新的长度。shift()
删除数组的第一个元素并将其返回,然后把所有随后的元素下移一个位置来填补数组头部的空缺。