使用js實(shí)現(xiàn)單鏈解決前端隊(duì)列問(wèn)題的方法
使用場(chǎng)景
- 比如前端需要處理什么隊(duì)列一類的業(yè)務(wù)
- 比如有人下單,需要彈出什么彈窗
首先先聲明一個(gè)類
接收一個(gè) 數(shù)組對(duì)象:items
class ChainQueue {
constructor(items) {
this.items = items || []
this.maxNum = 200
}
}
為隊(duì)列添加數(shù)組隊(duì)列
// 添加數(shù)組隊(duì)列
entryArrQueue(node) {
Array.isArray(node)
node.map(item => this.items.push(item))
}
為當(dāng)前隊(duì)列添加單個(gè)對(duì)象
// 添加隊(duì)列
entryQueue(node) {
if (this.items.length > this.maxNum) {
return
}
if (Array.isArray(node)) {
node.map(item => this.items.push(item))
} else {
this.items.push(node)
}
}
刪除隊(duì)列,返回刪除的當(dāng)前的項(xiàng)目
deleteQueue(func = () => {}) {
assert(isFunc(func), `${func} is not function`)
func(this.items.shift())
}
返回隊(duì)列的第一個(gè)
front() {
return this.items[0]
}
清除隊(duì)列
clear() {
this.items = []
}
所有代碼
const isFunc = v => typeof v === 'function'
const assert = (condition, msg) => {
if (!condition) throw new Error(`[dashboard]${msg}`)
}
class ChainQueue {
constructor(items) {
this.items = items || []
this.maxNum = 200
}
// 添加數(shù)組隊(duì)列
entryArrQueue(node) {
Array.isArray(node)
node.map(item => this.items.push(item))
}
// 添加隊(duì)列
entryQueue(node) {
if (this.items.length > this.maxNum) {
return
}
if (Array.isArray(node)) {
node.map(item => this.items.push(item))
} else {
this.items.push(node)
}
}
// 刪除隊(duì)列,返回刪除的當(dāng)前的項(xiàng)目
deleteQueue(func = () => {}) {
assert(isFunc(func), `${func} is not function`)
func(this.items.shift())
}
// 返回隊(duì)列的第一個(gè)
front() {
return this.items[0]
}
// 清除隊(duì)列
clear() {
this.items = []
}
get size() {
return this.items.length
}
get isEmpty() {
return !this.items.length
}
print() {
console.log(this.items.toString())
console.log(this.items)
}
result() {
return this.items
}
}
module.exports = ChainQueue
// export default ChainQueue
// export default (ChainQueue = new ChainQueue())
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js冒泡法和數(shù)組轉(zhuǎn)換成字符串示例代碼
將數(shù)組轉(zhuǎn)換成字符串的方法有很多,想必大家也不會(huì)陌生,下面為大家講解下js冒泡法的使用,感興趣的朋友可以參考下2013-08-08
Javascript實(shí)現(xiàn)hashcode函數(shù)實(shí)現(xiàn)對(duì)象比較與原理說(shuō)明
在JavaScript中,數(shù)值的比較是比較簡(jiǎn)單的,使用相等(==)和全等(===)符號(hào)基本上可以解決大多數(shù)非對(duì)象的比較。但是相等(==)和全等(===)符號(hào)在對(duì)象 object 的比較上,就不能滿足所有的要求了2023-06-06
鍵盤上一張下一張兼容IE/google/firefox等瀏覽器
鍵盤上一張下一張的效果想必大家都有見(jiàn)到過(guò)吧,本文為大家介紹的這個(gè)兼容IE,google,firefox等主流瀏覽器2014-01-01
詳解JS中continue關(guān)鍵字和break關(guān)鍵字的區(qū)別
在javascript中continue的作用是退出當(dāng)前次循環(huán),break的作用則是一旦當(dāng)前循環(huán)有break那么直接退出整個(gè)循環(huán)。本文將通過(guò)一些示例為大家詳細(xì)講講二者的區(qū)別,感興趣的可以了解一下2022-08-08
swiper.js插件實(shí)現(xiàn)pc端文本上下滑動(dòng)功能示例
這篇文章主要介紹了swiper.js插件實(shí)現(xiàn)pc端文本上下滑動(dòng)功能,結(jié)合實(shí)例形式分析了swiper.js插件的具體引用與相關(guān)使用技巧,需要的朋友可以參考下2018-12-12
淺談使用splice函數(shù)對(duì)數(shù)組中的元素進(jìn)行刪除時(shí)的注意事項(xiàng)
下面小編就為大家?guī)?lái)一篇淺談使用splice函數(shù)對(duì)數(shù)組中的元素進(jìn)行刪除時(shí)的注意事項(xiàng)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12

