如何遍历两个数组并结合AND/OR运算符生成目标字符串?
完善JavaScript代码生成指定SQL条件字符串
需求说明
需要遍历statArr和typeArr两个数组,结合AND与OR运算符生成如下格式的SQL条件字符串:
stat = 'Closed' AND type = 'RD' OR stat = 'Closed' AND type = 'WW' OR stat = 'Closed' AND type = 'CC' OR stat = 'Closed' AND type = 'MB' OR stat = 'Closed' AND type = 'CN' OR stat = 'Investigation' AND type = 'RD' OR stat = 'Investigation' AND type = 'WW' OR stat = 'Investigation' AND type = 'CC' OR stat = 'Investigation' AND type = 'MB' OR stat = 'Investigation' AND type = 'CN'
原始不完整代码
var statArr = ["Closed", "Investigation"]; var typeArr = ["RD", "WW", "CC", "MB", "CN" ]; var sql = ""; for (let i = 0; i < statArr.length; i++) { sql += "stat = " + statArr[i] + " AND Type ="; } console.log(sql);
完善后的代码
var statArr = ["Closed", "Investigation"]; var typeArr = ["RD", "WW", "CC", "MB", "CN" ]; var sql = ""; // 外层遍历状态数组 for (let i = 0; i < statArr.length; i++) { const currentStat = statArr[i]; // 内层遍历类型数组,生成当前状态对应的所有类型条件 for (let j = 0; j < typeArr.length; j++) { const currentType = typeArr[j]; // 拼接单个条件,给字段值添加单引号,统一字段名为小写 sql += `stat = '${currentStat}' AND type = '${currentType}'`; // 非最后一组条件时,添加OR和换行 if (!(i === statArr.length - 1 && j === typeArr.length - 1)) { sql += " OR\n"; } else { // 最后一组条件添加空格,匹配示例格式 sql += " "; } } } console.log(sql);
代码说明
- 嵌套循环:外层遍历状态数组,内层遍历类型数组,实现所有状态与类型的组合覆盖。
- 模板字符串:用模板字符串简化拼接逻辑,同时给字段值添加单引号,符合SQL语法规范。
- 边界判断:通过判断是否为最后一组条件,避免在字符串末尾生成多余的
OR。 - 格式统一:将原始代码中的
Type改为小写type,与期望输出的格式保持一致。
内容的提问来源于stack exchange,提问作者Behseini
相关产品推荐
相关产品推荐

