/**
 * @description 枚举类
 */

class DofEnum {
  constructor(list) {
    if (!Array.isArray(list)) {
      return
    }
    this.items = list
    this.keys = []
    this.values = []
    this.texts = []
    list.map(e => {
      this.keys.push(e.key)
      this.values.push(e.value)
      this.texts.push(e.text)
      this[e.key] = e
    })
  }

  /* 根据key得到对象 */
  getItemByKey(key) {
    return this[key] || null
  }

  /* 根据value得到对象 */
  getItemByValue(value) {
    return this.items[this.values.indexOf(value)] || null
  }

  /* 根据text得到对象 */
  getItemByText(text) {
    return this.items[this.texts.indexOf(text)] || null
  }

  /* 根据value获取text值 */
  getTextByValue(value) {
    const e = this.getItemByValue(value) || {}
    return e.text || ''
  }

  /* 根据title获取value值 */
  getValueByText(text) {
    const e = this.getItemByText(text) || {}
    return e.value || ''
  }

  /* 根据value获取key */
  getKeyByValue(value) {
    const e = this.getItemByValue(value) || {}
    return e.key || ''
  }
}

export default DofEnum
