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

JavaScript如何处理前端传入对象生成含$in条件的查询过滤对象

完整实现代码

let args = {};
for (let key in filters) {
    // 加可选链避免undefined报错
    if (filters[key]?.length > 0) {
        if (key === "category") {
            // 先初始化category基础结构
            const categoryConfig = {
                name: filters['category']
            }
            // 仅当subCategory为非空数组时才追加对应字段
            if (Array.isArray(filters.subCategory) && filters.subCategory.length > 0) {
                // map遍历提取所有subCategory的name属性组成数组
                const subNameList = filters.subCategory.map(item => item.name);
                categoryConfig.subCategory = {
                    name: {
                        $in: subNameList
                    }
                }
            }
            args.category = categoryConfig;
        }
    }
}
console.log(args);

核心逻辑说明

  • 提取subCategory的name数组:使用数组的map方法遍历subCategory,逐个返回每个元素的name属性,直接生成符合$in参数要求的字符串数组,适配任意长度的subCategory数组。
  • 动态生成subCategory字段:不要将subCategory写死在初始化的category对象中,先创建仅包含name的基础对象,再判断subCategory的合法性(是数组且长度大于0),满足条件才追加subCategory字段,无符合条件的subCategory时不会生成多余字段。

效果验证

  • 若前端传入的subCategory为空数组,生成的过滤参数为 { category: {name: "Fashion"} },无冗余字段
  • 若subCategory有值,生成的参数完全匹配要求的目标格式,$in数组内容会随传入的subCategory动态更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:36:03