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

求助:如何使用JavaScript过滤两个不同长度的对象数组,筛选匹配颜色与尺码的商品?

解决方案:匹配两个对象数组的尺码与颜色

没问题,我来帮你搞定这个数组过滤的问题!你的需求很明确——从productList里挑出和shoppingCart中颜色(对应color_code)+尺码匹配的商品,下面是两种可行的实现方式,我会详细解释思路:

高效实现(推荐)

如果你的数组数据量比较大,推荐用这种方式,通过集合(Set)来优化查找效率:

let productList= [
  { "color_code": "DDFFBB", "size": "S", "stock": 3 },
  { "color_code": "DDFFBB", "size": "M", "stock": 5 },
  { "color_code": "CCCCCC", "size": "S", "stock": 4 },
  { "color_code": "CCCCCC", "size": "M", "stock": 1 },
  { "color_code": "BB7744", "size": "S", "stock": 2 },
  { "color_code": "BB7744", "size": "M", "stock": 6 }
];

let shoppingCart=[
  { "id": 201807202150, "color": "DDFFBB", "size": "M" },
  { "id": 201807202150, "color": "BB7744", "size": "M" },
  { "id": 201807202150, "color": "DDFFBB", "size": "S" }
];

// 第一步:把购物车中的匹配规则转换成唯一标识的集合
const cartMatchKeys = new Set(
  shoppingCart.map(item => `${item.color}-${item.size}`)
);

// 第二步:过滤产品列表,保留符合规则的项
const filteredProducts = productList.filter(product => {
  const productKey = `${product.color_code}-${product.size}`;
  return cartMatchKeys.has(productKey);
});

console.log(filteredProducts);

思路说明

  1. 预处理购物车规则:把shoppingCart里的每个条目,用颜色-尺码的字符串格式生成唯一标识,存到Set中。Set的查找是O(1)时间复杂度,比嵌套循环快很多。
  2. 过滤产品列表:遍历productList,对每个产品生成同样格式的标识,检查是否在Set里——如果存在,就说明这个产品和购物车中的某条记录匹配,保留它。

简易实现(适合小数据量)

如果你的数组规模很小,也可以直接用嵌套判断的方式,代码更简洁:

const filteredProducts = productList.filter(product => {
  // 检查购物车中是否存在匹配的颜色和尺码
  return shoppingCart.some(item => 
    item.color === product.color_code && item.size === product.size
  );
});

思路说明

用filter遍历产品列表,对每个产品,用some方法检查shoppingCart里是否有任意一条记录满足颜色(color对应color_code)和尺码的匹配条件。这种方式代码短,但数据量大时性能不如Set方案。

两种方式运行后,都会得到你期望的输出:

[
  { "color_code": "DDFFBB", "size": "S", "stock": 3 },
  { "color_code": "DDFFBB", "size": "M", "stock": 5 },
  { "color_code": "BB7744", "size": "M", "stock": 6 }
]

内容的提问来源于stack exchange,提问作者Taiwan No.1

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 18:38:14