• js 实现List


    js 实现List

    列表是一组有序的数据。每个列表中的数据项称为元素。在 JavaScript 中,列表中的元素可以是任意数据类型。
    我们可以根据数组的特性来实现List。

    List 抽象数据类型定义

    • listSize(属性) 列表的元素个数
    • pos(属性) 列表的当前位置
    • length(属性) 返回列表中元素的个数
    • clear(方法) 清空列表中的所有元素
    • toString(方法) 返回列表的字符串形式
    • getElement(方法) 返回当前位置的元素
    • insert(方法) 在现有元素后插入新元素
    • append(方法) 在列表的末尾添加新元素
    • remove(方法) 从列表中删除元素
    • front(方法) 将列表的当前位置设移动到第一个元素
    • end(方法) 将列表的当前位置移动到最后一个元素
    • prev(方法) 将当前位置前移一位
    • next(方法) 将当前位置后移一位
    • currPos(方法) 返回列表的当前位置
    • moveTo(方法) 将当前位置移动到指定位置

    实现

    class List{
        constructor() {
            this.dataSouce = [];
            this.listSize = 0; // 列表的大小
            this.pos = 0;     // 列表中当前的位置
        }
        /**
         * 在列表的末尾添加新元素
         * @param {*} element 要添加的元素
         */
        append(element) {
            this.dataSouce[this.listSize++] = element;
        }
    
        /**
         * 在列表中插入一个元素
         * @param {*} element 
         * @param {*} after 
         */
        insert(element) {
            this.dataSouce.push(element);
            this.listSize++;
        }
    
        /**
         * 在列表中移除一个元素
         * @param {*} element 要删除的元素
         */
        remove(element) {
            // 查找当前元素的索引
           const index = this.dataSouce.indexOf(element);
           if (index >= 0) {
                this.dataSouce.splice(index, 1);
                this.listSize--;
                return true;
           }
           return false;
        }
    
        /**
         * 判断给定的值是否在列表中
         */
        contains(element) {
            return this.dataSouce.indexOf(element) > -1;
        }
    
        /**
         * 将列表的当前位置设移动到第一个元素
         */
        front() {
            this.pos = 0;
        }
    
        /**
         * 将列表的当前位置移动到最后一个元素
         */
        end() {
            this.pos = this.listSize - 1;
        }
    
        /**
         * 将当前位置前移一位
         */
        prev() {
            if (this.pos > 0) {
                --this.pos;
            }
        }
    
        /**
         * 将当前位置向后移一位
         */
        next() {
            if (this.pos <= (this.listSize - 1)) {
                ++this.pos;
            }
        }
    
        /**
         * 返回列表的当前位置
         */
        currPos() {
            return this.pos;
        }
    
        /**
         * 将当前位置移动到指定位置
         * @param {*} position 
         */
        moveTo(position) {
            this.pos = position;
        }
    
        /**
         * 返回当前位置的元素
         */
        getElement() {
            return this.dataSouce[this.pos];
        }
    
        /**
         * 清楚列表中的元素
         */
        clear() {
            delete this.dataSouce;
            this.dataSouce = [];
            tihs.listSize = 0;
            this.pos = 0;
        }
    
        /**
         * 列表的长度
         */
        length() {
            return this.listSize;
        }
    
        /**
         * 显示当前列表的元素
         */
        toString() {
            return this.dataSouce;
        }
    }
    
    export default List;
    
  • 相关阅读:
    开源快速开发平台 WebBuilder 6.58 final 发布。
    快速开发平台 Putdb WebBuilder 6.9
    Java Web开发平台 WebBuilder访谈 (Web开发工具,Web开发框架,Web快速开发)
    软件定制开发工具 WebBuilder 6.5 发布
    Web开发框架
    几款Web快速开发平台比较
    利用sql批量删除表,存储过程。
    一个简单的在线客服的实现(漂浮在网站左侧,随页面滚动
    (转载)input中id和name属性的区别。
    关于seo大家给点建议吧。
  • 原文地址:https://www.cnblogs.com/qiaojie/p/9571990.html
Copyright © 2020-2023  润新知