12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- class Enum {
- constructor (param) {
- const keyArr = []
- const valueArr = []
- if (!Array.isArray(param)) {
- throw new Error('param is not an array!')
- }
- param.map(element => {
- if (!element.key || !element.name) {
- return
- }
-
- keyArr.push(element.key)
- valueArr.push(element.value)
-
- this[element.key] = element
- if (element.key !== element.value) {
- this[element.value] = element
- }
- })
-
- this.data = param
- this.keyArr = keyArr
- this.valueArr = valueArr
-
-
- }
-
- keyOf (key) {
- return this.data[this.keyArr.indexOf(key)]
- }
-
- valueOf (key) {
- return this.data[this.valueArr.indexOf(key)]
- }
-
- getNameByKey (key) {
- const prop = this.keyOf(key)
- if (!prop) {
- throw new Error('No enum constant' + key)
- }
- return prop.name
- }
-
- getNameByValue (value) {
- const prop = this.valueOf(value)
- if (!prop) {
- throw new Error('No enum constant' + value)
- }
- return prop.name
- }
-
- getValueByKey (key) {
- const prop = this.keyOf(key)
- if (!prop) {
- throw new Error('No enum constant' + key)
- }
- return prop.key
- }
-
- getData () {
- return this.data
- }
- }
- export default Enum
|