js 實現List

來源:互聯網
上載者:User

標籤:splice   .data   移除   rev   索引   efault   類型   end   struct   

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;

js 實現List

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.