You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript的map处理多层嵌套数组生成指定格式条件字符串

解决方案

你可以把三层嵌套的逻辑逐层拆分处理,每层只负责当前层级的拼接规则,实现起来会很清晰:

  1. 最内层处理单个条件:把col、op、colVal拼接成字段 运算符 '值'的格式
  2. 中间层处理qryReqs数组:把同组的多个单个条件用and连接,整体包裹小括号
  3. 最外层处理qryWhere数组:把所有带括号的条件组用or连接,赋值给对应的qryResult即可

完整实现代码

const processedQry = qry.map(qItem => {
  // 生成所有用and拼接的括号条件组
  const conditionGroups = qItem.qryWhere.map(whereItem => {
    // 单组内的条件用and拼接
    const andConditions = whereItem.qryReqs.map(req => {
      return `${req.col} ${req.op} '${req.colVal}'`
    }).join(' and ')
    return `(${andConditions})`
  })
  // 所有条件组用or拼接,赋值给qryResult
  qItem.qryResult = conditionGroups.join(' or ')
  return qItem
})

运行结果验证

处理后你可以直接拿到对应值:

  • qry[0].qryResult 对应qryNm为A的结果:(name = 'tom' and country = 'germany') or (name = 'sally' and country = 'italy')
  • qry[1].qryResult 对应qryNm为B的结果:(name = 'kirk' and country = 'sweeden') or (name = 'grace' and country = 'usa')

补充注意

如果实际场景中colVal可能包含单引号,需要提前对req.colVal做单引号转义处理,避免生成的条件语句语法错误。

内容的提问来源于stack exchange,提问作者ArthurJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 15:15:00