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

被折叠的 条评论
为什么被折叠?



