日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript数据结构与算法——列表详解(下),基于Nodejs实现一个列表应用

發布時間:2023/12/31 javascript 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript数据结构与算法——列表详解(下),基于Nodejs实现一个列表应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、上篇回顧:

上篇我們實現了一個列表類,并添加了一些屬性,實現了比較多的方法,本文章將與大家一起使用列表實現一個圖書借閱查詢系統。需要使用JavaScript數據結構與算法——列表詳解(上)中寫好的列表類List()。

如需查看List()類代碼說明,請查閱本人列表上篇講解,這里只給出List的源碼,以供接下來寫調用:

function List() {this.listSize = 0this.pos = 0this.dataStore = [] // 初始化一個用于保存列表元素的空數組this.clear = clearthis.find = findthis.toString = toStringthis.insert = insertthis.append = appendthis.remove = removethis.front = frontthis.end = endthis.prev = prevthis.next = nextthis.hasNext = hasNextthis.hasPrev = hasPrevthis.length = lengththis.currPos = currPosthis.moveTo = moveTothis.getElement = getElementthis.contains = contains}function append(element) {this.dataStore[this.listSize++] = element}function find(element) {for (var i = 0; i < this.dataStore.length; i++) {if (this.dataStore[i] == element) {return i}}return -1}function remove(element) {var foundAt = this.find(element)if (foundAt > -1) {this.dataStore.splice(foundAt, 1)this.listSize--return true}return false}function length() {return this.listSize}function toString() {return this.dataStore.toString()}function insert(element, after) {var insertPos = this.find(after)if (insertPos > -1) {this.dataStore.splice(insertPos + 1, 0, element)this.liseSize++return true}return false}function clear() {delete this.dataStorethis.dataStore.length = 0this.listSize = 0this.pos = 0}function contains(element) {for (var i = 0; i < this.dataStore.length; i++) {return true}return false}// 遍歷列表function front() {this.pos = 0}function end() {this.pos = this.listSize - 1}function prev() {this.pos--}function next() {if (this.pos < this.listSize) {this.pos++}}function currPos() {return this.pos}function moveTo(position) {this.pos = position}function hasNext() {return this.pos < this.listSize}function hasPrev() {return this.pos >= 0}function getElement() {return this.dataStore[this.pos]}

2、基于Nodejs使用列表實現一個圖書借閱查詢系統

新建一個List文件夾,里邊包含一個book.txt(用于存放書本),一個book.js,用于編寫js(請先載入上篇中實現的List()相關代碼)。

2.1 讀取書本文件

// Created by xiaoqiang on 05/04/2018. var fs = require('fs') function readBooks('book.txt') {var data = fs.readFileSync(file)var dataArray = data.toString().split('\n')for (var i = 0; i < dataArray.length; i++) {dataArray[i] = dataArray[i].trim()}return dataArray }

編寫的過程可以在函數外添加console.log(readBooks('book.txt')),便于測試,進入當前文件夾,使用命令node book.js,看到以下結果證明node環境沒問題&&函數編寫沒問題:


2.2 保存書本到列表

開頭我們說過,上篇中我們寫好了一個List()類,接下來我們通過此類創建一個書本列表對象,并往列表對象中的dataStore屬性添加元素。

function saveBooksToList(file) {var booksArray = readBooks(file)for (var i = 0; i < booksArray.length; i++) {bookList.append(booksArray[i])} }

2.3 展示列表信息

function displayList(list) {for (list.front(); list.currPos() < list.length(); list.next()) {console.log(list.getElement())} }

測試:

var bookList = new List()saveBooksToList('book.txt')displayList(bookList)

運行結果:


2.4 創建借閱人方法

此方法用于保存哪個人借閱了哪些書。

// 借閱人信息 function borrower(name, book) {this.name = namehis.book = book }

2.5 實現借書方法

// 借書 function borrowBook(name, book, bookList, borrowerList) {if (bookList.contains(book)) {var b = new borrower(name, book)borrowerList.append(b)bookList.remove(book)console.log(name + '借閱書本' + book + '成功!!!')} else {console.log('書本已經被借走!!!')} }

解釋:四個參數意義分別為:借閱人名稱,要借的書本,書本列表,借閱人列表;首先檢查書本是否存在,存在的話將書本及借閱人信息保存到借閱人列表,信息如果不存在提示錯誤信息。

2.6 最終結果測試

// 書本列表對象var bookList = new List()// 借閱人列表對象var borrowerList = new List()// 保存書本到列表saveBooksToList('book.txt')console.log('------------當前可借的書-------------------')// 顯示書本信息displayList(bookList)console.log('-----------------開始借書------------------')// 借書borrowBook('xgq', 'Nodejs詳解', bookList, borrowerList)console.log('-----------------借閱信息------------------')// 顯示借閱人列表displayList(borrowerList)console.log('-----------------剩余可借的書---------------') // 借閱后剩余的書本列表displayList(bookList)

結果:

2.7 book.js完整代碼(整合上篇):

// Created by xiaoqiang on 05/04/2018.var fs = require('fs')var readline = require('readline') // JavaScript數據結構與算法——列表詳解(上)function List() {this.listSize = 0this.pos = 0this.dataStore = [] // 初始化一個用于保存列表元素的空數組this.clear = clearthis.find = findthis.toString = toStringthis.insert = insertthis.append = appendthis.remove = removethis.front = frontthis.end = endthis.prev = prevthis.next = nextthis.hasNext = hasNextthis.hasPrev = hasPrevthis.length = lengththis.currPos = currPosthis.moveTo = moveTothis.getElement = getElementthis.contains = contains}function append(element) {this.dataStore[this.listSize++] = element}function find(element) {for (var i = 0; i < this.dataStore.length; i++) {if (this.dataStore[i] == element) {return i}}return -1}function remove(element) {var foundAt = this.find(element)if (foundAt > -1) {this.dataStore.splice(foundAt, 1)this.listSize--return true}return false}function length() {return this.listSize}function toString() {return this.dataStore.toString()}function insert(element, after) {var insertPos = this.find(after)if (insertPos > -1) {this.dataStore.splice(insertPos + 1, 0, element)this.liseSize++return true}return false}function clear() {delete this.dataStorethis.dataStore.length = 0this.listSize = 0this.pos = 0}function contains(element) {for (var i = 0; i < this.dataStore.length; i++) {return true}return false}// 遍歷列表方法function front() {this.pos = 0}function end() {this.pos = this.listSize - 1}function prev() {this.pos--}function next() {if (this.pos < this.listSize) {this.pos++}}function currPos() {return this.pos}function moveTo(position) {this.pos = position}function hasNext() {return this.pos < this.listSize}function hasPrev() {return this.pos >= 0}function getElement() {return this.dataStore[this.pos]}// 讀取書本文件function readBooks(file) {var data = fs.readFileSync(file)var dataArray = data.toString().split('\n')for (var i = 0; i < dataArray.length; i++) {dataArray[i] = dataArray[i].trim()}return dataArray } // 保存書本到列表 function saveBooksToList(file) {var booksArray = readBooks(file)for (var i = 0; i < booksArray.length; i++) {bookList.append(booksArray[i])} } // 展示列表信息 function displayList(list) {for (list.front(); list.currPos() < list.length(); list.next()) {console.log(list.getElement())} }// 借閱人信息 function borrower(name, book) {this.name = namethis.book = book }// 借書 function borrowBook(name, book, bookList, borrowerList) {if (bookList.contains(book)) {var b = new borrower(name, book)borrowerList.append(b)bookList.remove(book)console.log(name + '借閱書本' + book + '成功!!!')} else {console.log('書本已經被借走!!!')} } // 測試// 書本列表對象var bookList = new List()// 借閱人列表對象var borrowerList = new List()// 保存書本到列表saveBooksToList('book.txt')console.log('------------當前可借的書-------------------')// 顯示書本信息displayList(bookList)console.log('-----------------開始借書------------------')// 借書borrowBook('xgq', 'Nodejs詳解', bookList, borrowerList)console.log('-----------------借閱信息------------------')// 顯示借閱人列表displayList(borrowerList)console.log('-----------------剩余可借的書---------------') // 借閱后剩余的書本列表displayList(bookList)

有錯誤歡迎指出,謝謝。

完結~~

總結

以上是生活随笔為你收集整理的JavaScript数据结构与算法——列表详解(下),基于Nodejs实现一个列表应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。