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
}
}