列表是一組有序的數據。每一個列表中的數據項稱爲元素。在 JavaScript 中,列表中的元素能夠是任意數據類型。
咱們能夠根據數組的特性來實現List。數組
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;