JS表的模拟

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>列表</title>
        <script>
         function List(){
            this.listSize= 0;
            this.pos=0;
            this.dataStore=[];//初始化一个空数组来保存列表元素
            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.length = length;
            this.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 element;
                    //return true 原本是这样,后面本人改为ELEMENT
                }else{
                    return false;
                }
            }
            function length(){
                return this.listSize;
            }
            function toString(){
                return this.dataStore;
            }
            function insert(element,after){
                var insertPos = this.find(after);
                if(insertPos!=-1){
                    this.dataStore.splice(insertPos+1,0,element);
                    this.listSize++;
                    return true;
                }else{
                    return false;
                }
            }
            function clear (){
                delete this.dataStore;
                this.listSize=0;
                this.pos=0;
                this.dataStore=[];
            }
            function contains(element){
                for(var i =0; i<this.dataStore.length; i++){
                    if(this.dataStore[i]===element){
                        return true ;
                    }               
                }
                return false;
            }
            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(pos){
                this.pos= pos;          
            }
            function getElement(){
                return this.dataStore[this.pos];
            }
         }
         var list = new List();
         list.append({name:'夏广成',sex:'男'});
         list.append({name:'江荣盛',sex:'男'});
         list.append({name:'杜强',sex:'男'});
         list.append({name:'巧华',sex:'女'});
         list.append({name:'方阳',sex:'男'});

        for(list.front(); list.currPos() < list.length() ; list.next()){
          var item = list.getElement();
          if(item.sex =='女'){
            list.remove(item);
          }
        }
        for(list.front(); list.currPos() < list.length() ; list.next()){
          var item = list.getElement();
            console.log(item.name);
        }
        </script>
    </head>
    <body >

    </body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值