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

如何基于请求体中的数组实现电商多维度筛选?

多条件数组筛选实现方案

核心逻辑

要实现你需要的筛选效果,需同时满足两个核心条件:

  • 商品的rating值属于请求中指定的评分数组
  • 商品的location值属于请求中指定的地点数组
    同时还可以叠加分类、价格区间的过滤条件。

各技术栈实现示例

前端JavaScript实现

假设你有商品数据集,直接用数组filter方法完成筛选:

// 接收的请求参数
const filterParams = {
    "category": "Mobile",
    "price": {
        "from": "10",
        "to": "50"
    },
    "location": ["Jakarta", "Bandung", "Surabaya"],
    "rating": ["1", "2", "3"]
};

// 模拟商品数据
const productList = [
    { id: 1, name: "入门款手机", category: "Mobile", price: 25, location: "Jakarta", rating: "2" },
    { id: 2, name: "中端机型", category: "Mobile", price: 45, location: "Surabaya", rating: "3" },
    { id: 3, name: "高端旗舰", category: "Mobile", price: 60, location: "Medan", rating: "4" },
    { id: 4, name: "备用机", category: "Mobile", price: 15, location: "Bandung", rating: "1" },
];

// 执行筛选
const filteredProducts = productList.filter(item => {
    // 匹配评分
    const isRatingMatch = filterParams.rating.includes(item.rating);
    // 匹配地点
    const isLocationMatch = filterParams.location.includes(item.location);
    // 匹配价格区间(注意转数字)
    const isPriceMatch = item.price >= parseInt(filterParams.price.from) && item.price <= parseInt(filterParams.price.to);
    // 匹配分类
    const isCategoryMatch = item.category === filterParams.category;

    // 同时满足所有条件
    return isRatingMatch && isLocationMatch && isPriceMatch && isCategoryMatch;
});

console.log(filteredProducts);
// 输出:id为1、2、4的商品

后端SQL实现

如果在数据库层面做筛选,使用IN关键字匹配数组条件:

SELECT * FROM products
WHERE 
    category = 'Mobile'
    AND price BETWEEN 10 AND 50
    AND rating IN ('1', '2', '3')
    AND location IN ('Jakarta', 'Bandung', 'Surabaya');

后端MongoDB实现

利用MongoDB的$in操作符实现数组匹配:

const query = {
    category: "Mobile",
    price: { $gte: 10, $lte: 50 },
    rating: { $in: ["1", "2", "3"] },
    location: { $in: ["Jakarta", "Bandung", "Surabaya"] }
};

// 查询符合条件的商品
db.products.find(query);

关键注意点

  • 数据类型统一:请求中的价格参数是字符串,需要转换为数字后再做比较,避免逻辑错误
  • 空数组处理:如果用户未选择任何地点或评分,需跳过对应条件的判断,否则会筛选出空结果
  • 性能优化:数据量较大时,优先在数据库层面完成筛选,减少后端或前端的内存消耗

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:45:41