/**
 * 将KeyValue数组转换为对象
 * @param {Array} keyValues
 * @returns {Object}
 */
function keyValueToMap(keyValues) {
  return keyValues.reduce((map, kv) => {
    map[kv.value] = kv;
    return map;
  }, {});
}

/**
 * 根据value从KeyValue中查找label
 * @param {Array} keyValues
 * @param {string|number} value
 * @returns {string}
 */
function getLabelFromKeyValue(keyValues, value) {
  const kv = keyValues.find((kv) => kv.value == value);
  return kv?.label || "-";
}

/**
 * 根据label从KeyValue中查找value
 * @param {Array} keyValues
 * @param {string} label
 * @returns {string|number|null}
 */
function getValueFromLabel(keyValues, label) {
  const kv = keyValues.find((kv) => kv.label === label);
  return kv?.value || null;
}

// 同样改写getOther和getEnabled函数

/**
 * OptionsEnum对象
 */
export function createOptionsEnum(keyValues) {
  const options = keyValues;

  return {
    options,
    enum: keyValueToMap(keyValues),
    getLabel: (value) => getLabelFromKeyValue(options, value),
    getValue: (label) => getValueFromLabel(options, label),
    // 其他函数
  };
}
