SOURCE

/**
 * @description [实现一个列表,用于流程控制]
 * @param [Array] initalData
 */
class CList {
	constructor(initalData) {
		// 列表长度
		this.size = initalData ? initalData.length : 0
		// 列表当前位置
		this.pos = 0
		// 列表容器
		this.dataStorage = initalData || []
	}
  get curPos()  { return this.pos }                        // 返回列表的当前位置
  get hasPrev() { return this.pos > 0 }                    // 是否存在上一个位置的元素
  get hasNext() { return this.pos < this.size }            // 是否存在下一个位置的元素
  get curEle()  { return this.dataStorage[this.pos] }      // 返回列表当前位置的元素
  
  front = () => (this.pos = 0)                             // 将列表的当前位置移动到第一个元素
  end = () => (this.pos = this.size - 1)                   // 将列表的当前位置移动到最后一个元素
  prev = () => this.pos--                           	   // 将当前位置前移一个元素
  next = () => this.pos < this.size && this.pos++   	   // 将当前位置后移一位
  moveTo = position => (this.pos = position)       	       // 将列表的当前位置移动到指定位置
  append = ele => {   									   // 往数组末端添加一个元素
    this.dataStorage[this.size++] = ele
  }
  find = (ele) => {                   					   // 查找某个元素的下标,存在则返回下标,不存在返回-1
    for (let i = 0; i < this.size; i++) {
      if (ele === this.dataStorage[i]) {
        return i
      }
    }
    return -1
  }
  insertBefore = (ele, before) => {    					   // 在某个元素之前插入新元素
    const indexPos = this.find(before)
    if (indexPos > -1) {
      this.dataStorage.splice(before, 0, ele)
      this.size++
      return true         // 插入成功返回true
    } else {
      return false        // 插入失败返回false
    }
  }
  clear = () => {                                          // 清空列表
    this.dataStorage = []
    this.size = 0
  }
  remove = ele => {           							   // 从列表中移除某个元素
    const indexPos = this.find(ele)
    const res = this.dataStorage.splice(indexPos, 1)
    if (res.length > -1) {
      this.size--
      return true
    }
    return false
  }
}

const myList = new CList([1,2,3])

console.log(myList.curPos)
myList.next()
console.log(myList.curPos)
myList.prev()
console.log(myList.curPos)
console.log(myList.hasPrev)

console 命令行工具 X clear

                    
>
console