使用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-08Javascript實(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等瀏覽器
鍵盤上一張下一張的效果想必大家都有見到過(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-08swiper.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