JS实现根据字典项把字典码转为字典名称

文章介绍了如何编写一个函数,根据后端返回的不同字典码(单个、多个或数组形式),从给定的选项列表中匹配并组合相应的行为描述。函数接受字典码、选项列表、属性名等参数,确保代码的灵活性和错误处理。

需求说明

  • 字典项
const options = [
  { name: "抽烟", id: "0" },
  { name: "喝酒", id: "1" },
  { name: "烫头", id: "2" },
];
  • 如果后端返回字典码code'0',则函数处理结果为抽烟

  • 如果后端返回字典码code'0,1',则函数处理结果为抽烟,喝酒

  • 如果后端返回字典码code['0','1'],则函数处理结果为抽烟,喝酒

实现代码如下

/**
 * 需要转换的字典码,
 * 可能是单个字典码(Number | String) 0 '1' '2'
 * 也可以是多个字典码拼接(String)'0,1,2'
 * 也可以是个数组(Array) ['0','1','2']
 * @param {String | Number | Array} code
 * 字典项List
 * @param {Array} options
 * 字典项唯一值属性名 默认为 ‘id’
 * @param {String} propName
 * 字典项名字属性名 默认为 ‘name’
 * @param {String} labelName
 */

export const transDictCode = (
  code,
  options,
  propName = "id",
  labelName = "name"
) => {
  // 去除 '' 情况
  if (code === "") return console.error("字典码不能为空");
  let codeArr;
  if (typeof code === "string") {
    codeArr = code.split(",");
  } else if (typeof code === "number") {
    codeArr = String(code).split(",");
  } else if (Array.isArray(code)) {
    codeArr = code;
  } else {
    return console.error("字典码不合法");
  }
  // 定义一个res去接收find方法查找结果
  // 在定一个labelStr接收返回的字典名称字符串
  let res,
    labelStr = "";
  codeArr.forEach((code) => {
    res = options.find((item) => item[propName] == code);
    if (res) labelStr += res[labelName];
    else console.error(`${propName}为${code}的字典码未找到字典名称`);
  });
  return labelStr;
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值