constantFilter.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import { _filter_const_map } from './constant.js';
  2. export const constFilter = (value, key) => {
  3. _validateDefined(key);
  4. for (let k in _filter_const_map[key]) {
  5. if (_filter_const_map[key][k].value == value) return _filter_const_map[key][k].label;
  6. }
  7. };
  8. /**
  9. * 验证配置项是否存在
  10. * @param key 配置项键名
  11. * @private
  12. */
  13. const _validateDefined = key => {
  14. if (!_filter_const_map.hasOwnProperty(key)) {
  15. throw new Error(`constant dosen't find ${key}`);
  16. }
  17. return _filter_const_map[key];
  18. };
  19. /**
  20. * 获取配置项
  21. * @param key 配置项键名
  22. */
  23. export const getDefined = key => {
  24. return _validateDefined(key);
  25. };
  26. /**
  27. * 获取配置项深拷贝(在实例修改不影响原常量值)
  28. * @param key 配置项键名
  29. */
  30. export const getDefinedCopy = key => {
  31. return JSON.parse(JSON.stringify(_validateDefined(key)));
  32. };
  33. /**
  34. * 获取配置项中的某个值 (只对数组或对象有效)
  35. * @param key 配置项键名
  36. * @param value 值
  37. * @param by 值对应的匹配方式
  38. * @returns {{}} 某个值
  39. */
  40. export const getDefinedValue = (key, value, by = 'value') => {
  41. let obj = _validateDefined(key);
  42. let val = {};
  43. if (typeof obj != 'object') {
  44. return val;
  45. }
  46. for (var _key of Object.keys(obj)) {
  47. if (obj[_key][by] == value) {
  48. return obj[_key];
  49. }
  50. }
  51. return val;
  52. };
  53. /**
  54. * 输入key 值,将CONSTMAP中的key对应的Object按照value大小从小到达排序
  55. * @param {*} key
  56. */
  57. export const constMapToArray = key => {
  58. _validateDefined(key);
  59. let value = _filter_const_map[key];
  60. if (!_.isPlainObject(value)) {
  61. if (_.isArray(value)) return value;
  62. else throw new Error(`${value} must be Object or Array`);
  63. } else {
  64. let arr = [];
  65. for (let k in value) {
  66. arr.push(value[k]);
  67. }
  68. arr.sort((pre, next) => {
  69. return pre.value - next.vaue;
  70. });
  71. return arr;
  72. }
  73. };