zoukankan      html  css  js  c++  java
  • List of js

    function List(arr) {
        this.listSize  = arr.length; //列表元素个数
        this.pos       = 0;          //列表当前位置  
        this.dataStore = arr;        //初始化一个空数组来保存列表元素
    }
    List.prototype = {
        constructor: List,
        append: function(element) {
            this.dataStore[this.listSize++] = element;
        },
        find: function (element) {
            for (var i = 0; i < this.dataStore.length; ++i) {
                if (this.dataStore[i] == element) {
                    return i;
                }
            }
            return -1;
        },
        remove: function (element) {
            var foundAt = this.find(element);
    
            if (foundAt > -1) {
                this.dataStore.splice(foundAt, 1);
                --this.listSize;
                return true;
            }
            return false;
        },
        length: function() {
            return this.listSize;
        },
        toString: function() {
            return this.dataStore;
        },
        insert: function (element, after) {
            var insertPos = this.find(after);
    
            if (insertPos > -1) {
                this.dataStore.splice(insertPos + 1, 0, element);
                ++this.listSize;
                return true;
            }
            return false;
        },
        clear: function() {
            delete this.dataStore;
            this.dataStore = [];
            this.listSize = this.pos = 0;
        },
        contains: function (element) {
            for (var i = 0; i < this.dataStore.length; ++i) {
    
                if (this.dataStore[i] == element) {
                    return true;
                }
            }
            return false;
        },
        front: function() {
            this.pos = 0;
        },
        end: function() {
            this.pos = this.listSize-1;
        },
        prev: function() {
    
            if (this.pos > 0) {
                --this.pos;
            } else {
                console.log('已到达首页');
            }
        },
        next: function() {
    
            if (this.pos < this.listSize-1) {
                ++this.pos;
            } else {
                console.log('已到达末页');
            }
        },
        currPos: function() {
            return this.pos;
        },
        moveTo: function(position) {
            this.pos = position;
        },
        getElement: function() {
            return this.dataStore[this.pos];
        },
        displayObjList: function(Objtype) {
            for (var pos = 0; pos < this.length(); pos++) {
                if (this.dataStore[pos] instanceof Objtype) {
                   console.log(this.dataStore[pos]["name"] + ", " +
                       this.dataStore[pos]["movie"]);
                } else {
                  continue;
                }
            }
        },
    
        showAllList: function() {
            for (var pos = 0; pos < this.length(); pos++) {
                   console.log(this.dataStore[pos]);
            }
        }  
    }
    
    //文件数据
    var string = '(1)The Shawshank Redemption( 《肖申克的救赎》 )'
               + '(2)The Godfather( 《教父》 )'
               + '(3)The Godfather: Part II( 《教父 2》 )'
               + '(4)Pulp Fiction( 《低俗小说》 )'
               + '(5)The Good, the Bad and the Ugly( 《黄金三镖客》 )'
               + '(6)12 Angry Men( 《十二怒汉》 )'
               + '(7)Schindler’s List( 《辛德勒名单》 )'
               + '(8)The Dark Knight( 《黑暗骑士》 )'
               + '(9)The Lord of the Rings: The Return of the King( 《指环王:王者归来》 )'  
               + '(10)Fight Club( 《搏击俱乐部》 )'
               + '(11)Star Wars: Episode V - The Empire Strikes Back( 《星球大战 5:帝国反击战》 )'
               + '(12)One Flew Over the Cuckoo’s Nest( 《飞越疯人院》 )'
               + '(13)The Lord of the Rings: The Fellowship of the Ring( 《指环王:护戒使者》 )'
               + '(14)Inception( 《盗梦空间》 )'
               + '(15)Goodfellas( 《好家伙》 )'
               + '(16)Star Wars( 《星球大战》 )'
               + '(17)Seven Samurai( 《七武士》 )'
               + '(18)The Matrix( 《黑客帝国》 )'
               + '(19)Forrest Gump( 《阿甘正传》 )'
               + '(20)City of God( 《上帝之城》 )';
    var movies = string.split(/(d+)/g).splice(1);
    var moviesList = new List(movies); //保存电影
    var customers = new List([]);      //保存租赁电影的顾客
    var rentedMovies = new List([]);   //保存已租的电影
    
    //顾客类
    function Customer(name, movie) {
        this.name = name;
        this.movie = movie;
    };
    function checkOut(name, movie, customerList, rentedList) {
    
        if (this.contains(movie)) {
            var c = new Customer(name, movie);
            customerList.append(c);
            rentedList.append(movie);
            this.remove(movie);
        } else {
            console.log(movie + " is not available.");
        }
    };
    
    function checkIn(movie, customerList, rentedList) {
    
        if (rentedList.contains(movie)) {
            rentedList.remove(movie);
            this.append(movie);
            customerList.getBack(movie);
        } else {
            console.log(movie + " is not available.");
        }
    };
    function getBack(movie) {
        customers.dataStore.forEach(function(val, key) {
    
            if (val.movie == movie) {
                customers.dataStore.splice(key, 1);
                customers.listSize = customers.dataStore.length;
                return;
            }
        })
    }
    moviesList.checkOut = checkOut;
    moviesList.checkIn = checkIn;
    customers.getBack = getBack;
    console.log("Available movies is under follow: 
    ");
    moviesList.showAllList();
    var name = window.prompt('what is your name?');
    var movie = window.prompt('which movies do your like to see?');
    moviesList.checkOut(name, movie, customers, rentedMovies);
    console.log("Now available movies is under follow: 
    ");
    moviesList.showAllList();
    

      

  • 相关阅读:
    如何在自定义端口上运行 Spring Boot 应用程序
    如何重新加载Spring Boot 上的更改,而无需重新启动服务器
    JavaConfig
    常用的linux指令
    接口绑定有几种实现方式,分别是怎么实现的?
    JDK,JRE,JVM三者关系
    final finally finalize区别
    execute,executeQuery,executeUpdate的区别是什么?
    相对于Statement,PreparedStatement的优点是什么?
    JDBC访问数据的基本步骤是什么
  • 原文地址:https://www.cnblogs.com/lemon-zhang/p/7779214.html
Copyright © 2011-2022 走看看