用JavaScript中实现队列的优先级, 代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>优先队列</title>
</head>
<body>
<script type="text/javascript">
//创建一个优先队列
function Firque() {
this.item = []
//队列的优先级
function Que(el, psi) {
this.item = el
this.psi = psi
}
Firque.prototype.enque = (el, psi) => {
//判断优先级
let data = new Que(el, psi)
let flg = false//创建一个变量, 如果判断没有进去的话, 则在最后添加
for(let i =0; i<this.item.length; i++) {
if(data.psi < this.item[i].psi) {
//判断优先级, 如果新加的优先级小于原本的优先级, 则用splice的方法添加
this.item.splice(i, 0, data)
flg = true
break//跳出循环, 防止多余的添加,或则性能浪费
}
}
if(!flg) {//如果上面循环没有添加, 则最后添加
this.item.push(data)
}
}
}
let pq = new Firque()
pq.enque('第一个内容', 10)
pq.enque('第二个内容', 9)
pq.enque('第三个内容', 11)
pq.enque('第四个内容', 20)
pq.enque('第五个内容, 虽然我是最后添加的, 但是我有vip,免除排队', 1)
console.log(pq)
</script>
</body>
</html>
其他基本方法和队列一致, 可以去看我之前发的队列
效果图:
优先级越高所在的位置越靠前