序
为了简化后台配置、冗合了部分规则用于入参配置。这里是解决低代码多选入参格式的问题的解决方案。
大致思路
定义一个简单的规则集,其中 $ 表示数组,# 表示逗号分隔的值,* 表示 JSON 格式化。使用一个正则表达式(/([$#*])(\w+)/g)来匹配规则符号和参数名。然后,遍历所有匹配项,并将解析后的参数和规则存储到 parsedParams 数组中。
代码示例
// 定义一个简单的规则集
const rules = {
'$': 'array',
'#': 'commaSeparated',
'*': 'jsonFormatted',
};
// 示例参数字符串
const paramsStr = "$param1=#param2=*param3";
// 用于存储解析后的参数和规则的数组
const parsedParams = [];
// 使用正则表达式匹配规则符号和参数名
const regex = /([$#*])(\w+)/g;
let match;
// 遍历所有匹配项
while ((match = regex.exec(paramsStr)) !== null) {
const symbol = match[1];
const paramName = match[2];
const ruleName = rules[symbol];
// 将解析后的参数和规则存储到数组中
parsedParams.push({
paramName,
ruleName,
});
}
console.log(parsedParams);
// 模拟参数值
const paramValues = {
param1: [1, 2, 3],
param2: "1,2,3",
param3: '[{"a": 1}, {"b": 2}]',
};
// 应用规则并输出结果
for (const parsedParam of parsedParams) {
const { paramName, ruleName } = parsedParam;
const rawValue = paramValues[paramName];
let result;
switch (ruleName) {
case 'array':
result = rawValue;
break;
case 'commaSeparated':
result = rawValue.split(',').map(Number);
break;
case 'jsonFormatted':
result = JSON.parse(rawValue);
break;
default:
console.error(`Unknown rule: ${ruleName}`);
}
console.log(`${paramName} (${ruleName}):`, result);
}