news 2026/4/23 12:51:28

【场景】笛卡尔积

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【场景】笛卡尔积

电商系统中商品多规格选项(颜色、容量、版本等)的组合问题,核心算法是「笛卡尔积(Cartesian Product)」;如果涉及「过滤无效组合(比如某颜色无某容量)」「关联SKU/价格/库存」,则是在笛卡尔积基础上叠加「组合过滤/映射」逻辑,属于笛卡尔积的业务扩展。

一、先通俗理解:笛卡尔积就是「所有可能的组合」

笛卡尔积的本质是:多个集合中,取出每个集合的一个元素,组成所有可能的有序组合
对应电商场景:

  • 每个规格维度(颜色、容量)是一个「集合」;
  • 每个集合里的选项(比如颜色集合:红、蓝;容量集合:128G、256G)是集合的元素;
  • 笛卡尔积就是把这些维度的元素两两/多多搭配,生成所有可能的规格组合。
举例:2个维度的笛卡尔积
维度1(颜色)维度2(容量)
红色128G
蓝色256G

笛卡尔积结果(所有组合):
[红色+128G, 红色+256G, 蓝色+128G, 蓝色+256G]

举例:3个维度的笛卡尔积(颜色+容量+版本)
颜色容量版本
128G标准版
256G顶配版

笛卡尔积结果(共2×2×2=8种):
[红+128G+标准版, 红+128G+顶配版, 红+256G+标准版, 红+256G+顶配版, 蓝+128G+标准版, 蓝+128G+顶配版, 蓝+256G+标准版, 蓝+256G+顶配版]

二、笛卡尔积的核心实现(代码示例)

下面用JavaScript实现通用的多维度规格组合生成,适配任意数量的维度(颜色、容量、版本等):

/** * 生成多维度规格的笛卡尔积 * @param {Object} specs - 规格维度集合,比如 { color: ['红','蓝'], capacity: ['128G','256G'] } * @returns {Array} 所有规格组合(对象形式) */functioncartesianProduct(specs){// 1. 提取所有维度的key和对应的选项数组constdims=Object.keys(specs);// ['color', 'capacity']constvalues=dims.map(key=>specs[key]);// [['红','蓝'], ['128G','256G']]// 2. 初始化结果:初始为[{}](空组合)letresult=[{}];// 3. 遍历每个维度,叠加组合for(leti=0;i<values.length;i++){consttemp=[];constdimKey=dims[i];// 当前维度(比如color)constdimValues=values[i];// 当前维度的选项(比如['红','蓝'])// 遍历已有结果,和当前维度的每个选项组合for(constprevofresult){for(constvalofdimValues){temp.push({...prev,[dimKey]:val});}}result=temp;}returnresult;}// 测试:2个维度constspecs={color:['红色','蓝色'],capacity:['128G','256G']};console.log(cartesianProduct(specs));// 输出:// [// { color: '红色', capacity: '128G' },// { color: '红色', capacity: '256G' },// { color: '蓝色', capacity: '128G' },// { color: '蓝色', capacity: '256G' }// ]// 测试:3个维度constspecs3={color:['红','蓝'],capacity:['128G','256G'],version:['标准版','顶配版']};console.log(cartesianProduct(specs3));// 输出8种组合

三、电商实际场景的扩展(笛卡尔积+业务逻辑)

纯笛卡尔积会生成「所有理论组合」,但电商中很多组合是无效的(比如“红色+512G”无库存、“蓝色+128G”已下架),因此需要在笛卡尔积基础上做扩展:

1. 过滤无效组合

生成笛卡尔积后,结合后台SKU数据过滤掉「无库存/已下架/不支持」的组合:

// 假设后台返回的有效SKU列表(每个SKU对应一个有效组合+价格/库存)constvalidSKUs=[{color:'红色',capacity:'128G',price:2999,stock:100},{color:'红色',capacity:'256G',price:3499,stock:50},{color:'蓝色',capacity:'256G',price:3499,stock:80}];// 生成所有笛卡尔积组合后,过滤出有效组合constallCombos=cartesianProduct(specs);constvalidCombos=allCombos.filter(combo=>{// 匹配有效SKU(按维度字段匹配)returnvalidSKUs.some(sku=>{returnsku.color===combo.color&&sku.capacity===combo.capacity;});});console.log(validCombos);// 输出:排除了「蓝色+128G」,只保留3个有效组合
2. 关联SKU属性(价格、库存、SKU ID)

每个有效组合对应一个唯一SKU,用户选择组合后,需映射到对应的SKU信息:

// 用户选择的组合constuserSelected={color:'红色',capacity:'128G'};// 找到对应的SKUconstmatchedSKU=validSKUs.find(sku=>{returnsku.color===userSelected.color&&sku.capacity===userSelected.capacity;});console.log(matchedSKU);// 输出:{ color: '红色', capacity: '128G', price: 2999, stock: 100 }
3. 优化:避免组合数爆炸(维度多的场景)

如果维度多(比如颜色5种+容量4种+版本3种+套餐2种),笛卡尔积会生成 5×4×3×2=120 种组合,前端渲染/处理会卡顿,优化方案:

  • 懒生成:先只渲染单个维度的选项,用户选完一个维度后,再生成下一个维度的「可选选项」(比如用户选“红色”,再查红色支持的容量,而非一次性生成所有);
  • 后端预计算:把所有有效组合提前存在数据库,前端只请求「当前已选维度下的可选选项」(比如选了红色,后端返回红色支持的容量:128G、256G)。

四、总结

  1. 核心算法:商品多规格组合的基础是「笛卡尔积」,负责生成所有理论上的维度组合;
  2. 业务扩展:实际电商中需叠加「组合过滤」(剔除无效组合)、「SKU映射」(关联价格/库存);
  3. 性能优化:维度多的时候,通过「懒生成」「后端预计算」避免组合数爆炸。

这个逻辑是电商SKU管理的核心,几乎所有电商平台(淘宝、京东、拼多多)的商品规格选择,底层都是笛卡尔积+业务过滤的思路。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 3:45:39

万豪国际集团奢华品牌计划于2026年开业近35家新酒店

、美通社消息&#xff1a;近日&#xff0c;在法国戛纳举行的国际豪华旅游博览会(ILTM)上&#xff0c;万豪国际集团奢华品牌宣布&#xff0c;对奢华追求内涵的全新定义——其衡量标准不再以物质拥有为准&#xff0c;而以情感价值回报为核心。面对全球高净值旅行者群体的深刻转变…

作者头像 李华
网站建设 2026/4/20 16:53:32

Wan2.2-T2V-A14B模型量化压缩方案研究进展

Wan2.2-T2V-A14B模型量化压缩方案研究进展 在生成式AI飞速演进的今天&#xff0c;文本到视频&#xff08;Text-to-Video, T2V&#xff09;技术正从实验室走向真实产业场景。阿里巴巴推出的Wan2.2-T2V-A14B模型&#xff0c;作为一款拥有约140亿参数的旗舰级T2V系统&#xff0c;在…

作者头像 李华
网站建设 2026/4/23 12:46:23

SUSE:五大力量正在重塑亚太科技格局

在科技创新日新月异的今天&#xff0c;亚太地区的企业正站在一个关键的十字路口。到2026年&#xff0c;一个艰难的抉择将摆在它们面前&#xff1a;是继续沉溺于看似安全却潜藏巨大风险的封闭单一供应商解决方案&#xff0c;还是勇敢地拥抱科技领域的根本性变革&#xff0c;为未…

作者头像 李华
网站建设 2026/4/23 12:46:40

Ice桌面美化工具:智能壁纸管理与窗口布局优化

Ice桌面美化工具&#xff1a;智能壁纸管理与窗口布局优化 【免费下载链接】Ice Powerful menu bar manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ice/Ice 随着现代工作环境中多任务处理的普及&#xff0c;用户桌面往往充斥着杂乱的窗口布局和过时的…

作者头像 李华
网站建设 2026/4/23 12:47:23

GPT-Neo:开源大型自回归语言模型的实现与影响

本文由「大千AI助手」原创发布&#xff0c;专注用真话讲AI&#xff0c;回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我&#xff0c;一起撕掉过度包装&#xff0c;学习真实的AI技术&#xff01; 1 引言 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;…

作者头像 李华
网站建设 2026/4/23 12:46:57

Softmax温度调节影响ACE-Step生成多样性:参数调优指南

Softmax温度调节影响ACE-Step生成多样性&#xff1a;参数调优指南 在AI音乐生成迅速发展的今天&#xff0c;我们正见证一场创作民主化的浪潮。曾经需要多年训练才能掌握的作曲技巧&#xff0c;如今通过像ACE-Step这样的先进模型&#xff0c;几乎任何人都能实现“输入一段文字&…

作者头像 李华