javascript
javascript中的表结构
列表是一種常見的數(shù)據(jù)結(jié)構(gòu),通常列表是一族有徐的數(shù)據(jù),列表中的數(shù)據(jù)項稱為元素。在javascript中列表中的數(shù)據(jù)可以是任意類型的,列表中可以保存多少元素沒有事先限定,實際使用時元素的數(shù)量只收到程序內(nèi)內(nèi)存的限制。
不包含任何元素的列表稱為空列表,列表中包含元素的個數(shù)稱為列表的length,在內(nèi)部實現(xiàn)上,用一個變量listSize保存列表中元素的個數(shù)??梢栽诹斜砟┪瞐ppend一個元素,也可以在一個給定元素后面insert一個元素,使用remove方法從列表中刪除元素,使用clear方法清空列表中素有的元素。
列表有前后,分別對應front和end,使用getElement()方法顯示當前元素,列表擁有描述元素位置的屬性,使用next()方法可以從當前元素移動到下一個元素,使用prev()方法可以移動到當前元素的前一個元素,還可以使用moveTo(n)方法直接移動到指定的位置,這里n標識要移動到第n個位置,currPos屬性標識列表中的當前位置。
| listSize(屬性) | 列表的元素個數(shù) |
| pos( 屬性) | 列表的當前位置 |
| length( 屬性) | 返回列表中元素的個數(shù) |
| clear( 方法) | 清空列表中的所有元素 |
| toString( 方法) | 返回列表的字符串形式 |
| getElement( 方法) | 返回當前位置的元素 |
| insert( 方法) | 在現(xiàn)有元素后插入新元素 |
| append( 方法) | 在列表的末尾添加新元素 |
| remove( 方法) | 從列表中刪除元素 |
| front( 方法) | 將列表的當前位置設移動到第一個元素 |
| end( 方法) | 將列表的當前位置移動到最后一個元素 |
| prev(方法) | 將當前位置后移一位 |
| next( 方法) | 將當前位置前移一位 |
| currPos( 方法) | 返回列表的當前位置 |
| moveTo(方法) | 將當前位置移動到指定位置 |
下面我們看看代碼實現(xiàn)
function List() {this.listSize = 0;this.pos = 0;this.dataStore = []; //初始化一個空數(shù)組來保存列表元素this.clear = clear;this.find = find;this.toString = toString;this.insert = insert;this.append = append;this.remove = remove;this.front = front;this.end = end;this.prev = prev;this.next = next;this.length = length;this.currPos = currPos;this.moveTo = moveTo;this.getElement = getElement;this.contains = contains;//給列表添加元素,給列表的下一個位置增加一個新的元素,這個位置剛好等于listSize的值function append(element) {this.dataStore[this.listSize++] = element;}//在列表中查找一個元素,對數(shù)組對象dataStore迭代,查找給定的元素,如果找到就返回鈣元素在列表中的位置function find(element) {for(var i = 0; i < this.dataSource.length; ++i) {if(this.dataSource[i] == element) {return i;}return -1;}}//從列表中刪除元素,先在列表中找到該元素,然后刪除它,并且調(diào)整底層的數(shù)據(jù)對象以填補鈣元素留下的空白,slice()方法簡化這個過程function remove(elemment) {var foundAt = this.find(elemment);if(foundAt > -1) {this.dataSource.splice(foundAt, 1);--this.listSize;return true;}return false;}//返回列表中的元素個數(shù)function length(){return this.listSize;}function toString(){return this.dataStore;}//插入元素,先找到要插入的位置,然后插入一個元素listSize自增function insert(element, after){var insertPos = this.find(after);if(insertPos > -1){this.dataStore.splice(insertPos + 1, 0, element);++this.listSize;return true;}return false;}//清空列表中所有元素,指針指向第一個function clear(){delete this.dataStore;this.dataStore = [];this.listSize = this.pos = 0;}//判斷給定值是否在列表中function contains(element){for (var i=0; i<this.dataStore.length; ++i) {if(this.dataStore[i] == element){return true;}}return false;}//回到第0個function front(){this.pos = 0;}//到最后一個function end(){this.pos = this.listSize - 1;}//上一個,注意這里不判斷邊界function prev(){--this.pos;}//下一個,注意這里不判斷邊界function next(){++this.pos;}//當前指針function currPos(){return this.pos;}//定位到位置function moveTo(position){ // if( position>-1 && position<this.listSize ){this.pos = position; // } }//返回當前元素function getElement(){return this.dataStore[this.pos];} }var names = new List(); names.append('Clayton'); names.append('Raymond'); names.append('Cynthia'); names.append('Jennifer'); names.append('Bryan'); names.append('Danny');for(names.front(); names.currPos() < names.length(); names.next()) {document.writeln(names.getElement()); }for(names.end(); names.currPos() >= 0; names.prev()) {document.writeln(names.getElement()); }最后的輸出結(jié)果如下:
?
注意next()方法和prev()方法不判斷邊界,只負責移動下標。
?
?
作者:Tyler Ning
出處:http://www.cnblogs.com/tylerdonet/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,如有問題,可以通過以下郵箱地址williamningdong@gmail.com ?聯(lián)系我,非常感謝。
總結(jié)
以上是生活随笔為你收集整理的javascript中的表结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模块mod_h323的编译
- 下一篇: Unity运行时检测Altas使用情况