点击查看源码
请分别说明利用js数组模拟队列和堆栈的方法
创建队列更加严谨的方法请参考:https://www.jianshu.com/p/0c44bacb497e
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title>请分别说明利用js数组模拟队列和堆栈的方法</title>
</head>
<body>
<p>请分别说明利用js数组模拟队列和堆栈的方法</p>
<h3>队列遵循FIFO(先进先出)原则的一组有序的项。队列在尾部添加新元素,在顶部移除元素,最新添加的元素必须在队列的尾部。</h3>
<h3>栈是一种支持后进先出(LIFO)的集合,即后被插入的数据,先被取出,在顶部插入,顶部移除</h3>
<h3>堆是指程序运行时申请的动态内存</h3>
<ul>
<li>shift:从数组中把第一个元素删除,并返回这个元素的值。</li>
<li>unshift: 在数组的开头添加一个或更多元素,并返回新的长度</li>
<li>push:在数组的中末尾添加元素,并返回新的长度</li>
<li>pop:从数组中把最后一个元素删除,并返回这个元素的值。</li>
</ul>
</body>
<script type="text/javascript">
window.onload = function() {
/**
* @date 2018-8-25 22:47
* @author DIEW
* @class QUEUE
* 队列
*/
function QUEUE() {
this.dataBase = []; //创建空数组,存储数据(会暴露到外界,导致在方法外可以直接修改dataBase,参考:https://www.jianshu.com/p/0c44bacb497e 解决)
//入队(在队尾插入数据)
this.enqueue = function(data) {
this.dataBase.push(data);
};
//出队(移除顶部的数据)
this.dequeue = function() {
this.dataBase.shift();
};
};
//使用
var queue = new QUEUE();
queue.enqueue(1);
queue.enqueue(12);
console.log(queue.dataBase); //[1, 12]
queue.dequeue();
console.log(queue.dataBase); //[12]
/**
* @date 2018-8-25 22:47
* @author DIEW
* @class STACK
* 栈
*/
function STACK(){
this.dataBase = [];
//入栈
this.enstack = function(data){
this.dataBase.unshift(data);
};
//出栈
this.destack = function(){
this.dataBase.shift();
};
};
//使用
var stack = new STACK();
stack.enstack(1);
stack.enstack(12);
console.log(stack.dataBase); //[12, 1]
stack.destack();
console.log(stack.dataBase); //[1]
};
</script>
</html>
使用jQuery选择器找出所有p标签下的第一个a标签中的属性名 为na且值为“b”开头的元素(即输出b1和b4)
<div>
<p><a na="b1">b1</a><a na="b2"></a></p>
<p><a na="a1">a1</a><a na="b3"></a></p>
<p><a na="b4">b4</a><a na="ab"></a></p>
<p><a>null</a><a na="b5"></a></p>
</div>
var el = $("p").find("a:first[na][na!='a1']");