关于JS数据结构 之 列表
1.概念
列表是一组有序数据的集合,其中的每项数据被称为 元素
。在js中,列表中的元素可以是任意数据类型。列表中可以保存任意多个元素(在实际使用时会受到程序内存的限制)。
2.属性和方法
列表中有一些常见的属性和方法,下面一一列举:
- listSize(属性) :列表的元素个数
- position(属性) :列表当前的位置
- clear(方法):清空列表中的所有元素
- getElement(方法):获取当前位置上的元素
- find(方法) :在列表中查找一个元素
- insert(方法) :在现有元素后插入新元素
- append(方法):在列表末尾插入新元素
- remove(方法):从列表删除元素
- front(方法):将列表的当前位置移动到第一个元素
- end(方法):将列表的当前位置移动到最后一个元素
- prev(方法) :将当前位置向前移动一位
- next(方法):将当前位置向后移动一位
- moveTo(方法):将当前位置移动到指定位置
3.JS代码实现一个列表类
我们先定义一个列表类,将列表的属性和方法包装在类里
function List(){ this.dataSet = []//初始化一个空数组来保存列表元素 this.pos = 0//初始化一个属性表示列表当前的位置 this.listSize = 0 //初始化一个属性表示列表元素个数 this.clear = clear;//清空列表里的元素 this.find = find;//在列表上查找一个元素 this.getElement = getElement;//返回当前位置的元素 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.currPos = currPos; this.moveTo = moveTo; this.contains = contains; }
有了这个类,我们就可以执果索因,一步步将完整的构造函数写出来
3.1 实现clear 方法
function clear(){ delete this.dataSet;//删除原来的dataSet this.dataSet = [];//将新数组赋给dataSet this.pos = this.listSize = 0;//将数组当前位置和数组长度初始化为0 }
3.2 实现find 方法
function find(element){ for(var i=0;i<this.dataSet.length;i++){ if(this.dataSet[i]===element){ return i //若找到了element,则返回该元素的位置 } } return -1 //若没有在dataSet中找到element,则返回-1 }
3.3 实现getElement 方法
function getElement(pos){ return this.dataSet[this.pos] }
3.4 实现toString 方法
function toString(){ return this.dataSet }
3.5 实现insert 方法
function insert(element){ this.dataSet.splice(this.pos,0,element); }
3.6 实现append 方法
function append(element){ this.dataSet[this.listSize++]=element; }
3.7 实现remove方法
function remove(element){ var nowPos = this.find(element); if(nowPos>-1){ this.dataSet.splice(nowPos,1) this.listSize—-; //删除元素后要把listSize也减一 return true //删除成功,则返回true } return false //若删除不成功,则返回false }
3.8 实现六个操作position的方法
function front(){ this.pos = 0; } function end(){ this.pos = this.listSize-1 } function prev(){ if(this.pos>0){ this.pos—- } } function next(){ if(this.pos<this.listSize-1){ this.pos++ } } function currPos(){ return this.pos } function moveTo(newPos){ if(newPos>=0&&newPos<=this.listSize-1){ this.pos = newPos } }
3.9 实现contains方法
function contains(element){ var res = this.find(element); if(res>-1){ return true }else{ return false } }
相关推荐
wikiwater 2020-10-27
IdeaElements 2020-08-19
Sophiego 2020-08-16
Kakoola 2020-08-01
Kakoola 2020-07-29
ELEMENTS爱乐冬雨 2020-07-18
ELEMENTS爱乐小超 2020-07-04
ELEMENTS爱乐小超 2020-07-04
Kakoola 2020-06-28
Feastaw 2020-06-18
Wmeng0 2020-06-14
ELEMENTS爱乐冬雨 2020-06-14
云之高水之远 2020-06-14
哈喽elements 2020-06-14
Feastaw 2020-06-11