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

如何在JavaScript数组中提取各产品的最低价条目

提取同款产品的最低价条目实现方案

核心思路

  • 按产品唯一标识(如名称、SKU)分组,将同款产品归为同一组
  • 遍历每组,筛选出价格最低的条目
  • 将筛选结果转为数组,更新React状态或直接使用

具体实现代码

假设你的产品数组通过useState定义,结构如下:

const [products, setProducts] = useState([
  { id: 1, name: 'OPPO', price: 2999, specs: '8+128G' },
  { id: 2, name: 'OPPO', price: 2799, specs: '6+128G' },
  { id: 3, name: 'Iphone XS MAX PRO 512GB', price: 8999, color: '黑色' },
  { id: 4, name: 'Iphone XS MAX PRO 512GB', price: 8799, color: '白色' },
]);

实现筛选逻辑的函数:

const getLowestPriceProducts = () => {
  // 1. 按产品名称分组
  const groupedProducts = products.reduce((acc, product) => {
    const key = product.name;
    acc[key] = acc[key] || [];
    acc[key].push(product);
    return acc;
  }, {});

  // 2. 每组筛选最低价条目
  const lowestPriceList = Object.values(groupedProducts).map(group => {
    return group.reduce((prev, curr) => {
      // 若价格为字符串类型,需先转数字:parseFloat(prev.price) < parseFloat(curr.price)
      return prev.price < curr.price ? prev : curr;
    });
  });

  // 3. 更新状态(按需使用,也可直接返回结果)
  setProducts(lowestPriceList);
  return lowestPriceList;
};

补充说明

  • 若判断同款的标识不是name,可替换为业务中唯一的字段(如productId)
  • 若价格是带单位的字符串(如"2999元"),需先去除单位再转数字比较
  • 可在组件挂载时(useEffect)调用该函数,或在产品数组更新后触发筛选

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:20:36