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

Express.js中使用req.query.categoryId过滤JSON对象的问题

问题分析与解决方案

核心问题是类型不匹配:通过req.query.categoryId获取的参数默认是字符串类型,而你JSON对象里的categoryId大概率是数字类型。全等运算符===会同时比较值和类型,导致明明值看起来一样,但因为类型不同匹配失败。

解决方法:

  • 类型统一转换(推荐):把获取到的参数转为数字类型,再进行过滤:
    const paramCategory = Number(req.query.categoryId);
    result = result.filter((x) => x.categoryId === paramCategory);
    
  • 使用非全等运算符:如果不想做类型转换,可改用==(它会自动做类型转换,但注意隐式转换可能带来的意外问题):
    const paramCategory = req.query.categoryId;
    result = result.filter((x) => x.categoryId == paramCategory);
    
  • 特殊情况处理:如果你的categoryId本身是字符串类型(比如带字母的ID),检查JSON对象里的categoryId是否也是字符串,不一致的话统一转成字符串即可:
    const paramCategory = String(req.query.categoryId);
    result = result.filter((x) => x.categoryId === paramCategory);
    

额外排查点:

如果转类型后还是没效果,检查paramCategory是否为NaN(比如请求中categoryId参数为空或非数字内容),可以加个判断避免无效过滤:

const paramCategory = Number(req.query.categoryId);
if (!isNaN(paramCategory)) {
  result = result.filter((x) => x.categoryId === paramCategory);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:54:24