以下是常量的标准定义形式,其中key,value,label是每个对象的必需属性,并且key和value的属性值必须唯一。
而且除了key,value,label属性以外可以增加任意其他属性,但是要求每个对象的属性名需要一致。
注意 特殊情况下,key属性可以不存在,此时和key相关的函数不能使用。主要是为了兼容有些场景不需要key属性,比如后端接口返回的枚举值没有key属性。
export const EXAMPLE_OPTIONS = [
{
key: 'BOY', // 唯一
value: 1, // 必需且唯一
label: '男生', // 必需
tag: '高达', // 可选
color: 'red', // 可选
},
{
key: 'GIRL', // 唯一
value: 2, // 必需且唯一
label: '女生', // 必需
tag: '小仙女', // 可选
color: 'green', // 可选
},
] as const
const keys = getKeys(EXAMPLE_OPTIONS)
keys === ['BOY', 'GIRL']
const values = getValues(EXAMPLE_OPTIONS)
values === [1, 2]
const keyValueMap = getKeyValueMap(EXAMPLE_OPTIONS)
keyValueMap === { BOY: 1, GIRL: 2 }
const keyLabelMap = getKeyLabelMap(EXAMPLE_OPTIONS)
keyLabelMap === { BOY: '男生', GIRL: '女生' }
const valueKeyMap = getValueKeyMap(EXAMPLE_OPTIONS)
valueKeyMap === { 1: 'BOY', 2: 'GIRL' }
const valueLabelMap = getValueLabelMap(EXAMPLE_OPTIONS)
valueLabelMap === { 1: '男生', 2: '女生' }
const keyMap = getKeyOptionMap(EXAMPLE_OPTIONS)
keyMap === {
BOY: {
key: 'BOY',
value: 1,
label: '男生',
tag: '高达',
color: 'red'
},
GIRL: {
key: 'GIRL',
value: 2,
label: '女生',
tag: '小仙女',
color: 'green'
}
}
const valueMap = getValueOptionMap(EXAMPLE_OPTIONS)
valueMap === {
1: {
key: 'BOY',
value: 1,
label: '男生',
tag: '高达',
color: 'red'
},
2: {
key: 'GIRL',
value: 2,
label: '女生',
tag: '小仙女',
color: 'green'
}
}
// 获取key-tag的映射
const keyTagMap = getMapByKey(EXAMPLE_OPTIONS, 'tag')
keyTagMap === { BOY: '高达', GIRL: '小仙女' }
// 获取value-color的映射
const valueColorMap = getMapByValue(EXAMPLE_OPTIONS, 'color')
valueColorMap === { 1: 'red', 2: 'green' }