前言

 最近接了私活,关于器械商城的项目,最后收尾阶段,发现发布商品还是存在着问题,对于多个相同/不同的商品规格输出成商品时,需要依据规格名对规格值进行排列组合,保证所有规格值都可以进行选择。

核心代码部分

数据结构

      formState: {goods: {goodsSn: '', // 商品编号...xxx},// 商品规格specifications: [{specification: '规格',value: '标准',picUrl: '',},],// 商品库存products: [{// 商品规格列表specifications: [], price: 0,number: 0,url: '',},],}

转换代码

 // 规格 To 产品const specToProduct = () => {// 如果规格的数组长度为0,有可能此时为删除方法,则直接删除库存这一列if (state.formState.specifications.length === 0) {state.formState.products = [];return;}// 根据specifications创建临时规格列表var specValues = [];// 数组的第一个规格值var spec = state.formState.specifications[0].specification;var values = [];values.push(0);for (var i = 1; i < state.formState.specifications.length; i++) {// 每一项的规格值const aspec = state.formState.specifications[i].specification;// 去归总所有规格名相同的下标// 如果当前项的规格值与遍历的规格值相同的话if (aspec === spec) {values.push(i);} else {// 如果不相同,先把目前的已经归总规格名完毕的临时数组,加入到所创建的临时规格表中specValues.push(values);// 切换curr规格值,再去进行下一次匹配spec = aspec;// 清空临时数组values = [];// 将当前的下标,加入到临时values,进行下一次归组values.push(i);}}// 将最后一组分类加入到临时规格表中specValues.push(values);// 根据临时规格列表生产货品规格// 算法基于 https://blog.csdn.net/tyhj_sf/article/details/53893125var productsIndex = 0;var products = [];// 所有的的相同的规格名数组的二级数组var combination = [];// 所有分类的长度var n = specValues.length;// 根据specValues的长度初始化出所有的combinationfor (var s = 0; s < n; s++) {combination[s] = 0;}// 初始化var index = 0;var isContinue = false;// 排列组合~do {var specifications= [];for (var x = 0; x < n; x++) {var z = specValues[x][combination[x]];// 推入每个规格的规格值specifications.push(state.formState.specifications[z].value);}products[productsIndex] = {id: productsIndex,specifications: specifications,price: 0,number: 0,sand: 0,integral: 0,url: '',};// ++index,赋值下一个productsproductsIndex++;index++;combination[n - 1] = index;for (var j = n - 1; j >= 0; j--) {if (combination[j] >= specValues[j].length) {combination[j] = 0;index = 0;if (j - 1 >= 0) {combination[j - 1] = combination[j - 1] + 1;}}}// 退出循环的标志isContinue = false;for (var p = 0; p < n; p++) {if (combination[p] !== 0) {isContinue = true;}}} while (isContinue);// 赋值state.formState.products = products;};

 每当我们修改规格时,例如规格的删除/编辑/添加,都需要调用此方法进行重新输出商品。

效果展示

电商后台开发之商品规格组合算法相关推荐

  1. 电商后台设计:商品维护

    编辑导语:商品在整个电商系统中处于核心位置,因此商品维护对于电商后台设计的重要性不言而喻,本文作者以此为出发点,和我们聊一聊在电商后台设计中关于商品维护的那些事. 对于电商系统来说,商品模块的维护可以 ...

  2. 字节 抖音电商后台开发日常实习 一二面面经(已凉)

    恭喜发现宝藏!搜索公众号[TechGuide]回复公司名,解锁更多新鲜好文和互联网大厂的笔经面经,目前已更新至美团.微软- 作者@TechGuide[全网同名] 背景 面试部门:字节抖音电商 面试时间 ...

  3. 【大型电商项目开发】商品上架-es应用到商品上架-35

    一:商品上架 上架的商品才可以在网站展示. 上架的商品需要可以被检索. es是将数据保存到内存当中,所以我们不能将什么数据都保存到es当中,我们需要将重要的数据保存到es中.例如商品名称,规格型号,价 ...

  4. SpringBoot电商后台开发项目总结(1)

    这篇文章是无关业务逻辑代码的基础配置 目录 一.相关配置 1. 数据库相关配置 2.日志系统相关配置 二.开发框架搭建 1.设置返回接口标准类 2.自定义异常枚举类 3. 自定义异常处理类 4. 全局 ...

  5. 【大型电商项目开发】商品服务之SPU检索SKU检索-29

    一:spu检索 请求url:/product/spuinfo/list 1.编辑list接口 1)编辑SpuInfoController的list方法 /*** 列表*/@RequestMapping ...

  6. java 开发之商品规格属性(SKU)组合算法

    java 开发之商品规格属性(SKU)组合算法 开发背景 一般在开发商城的时候都会遇到商品规格组合的问题, 在这个开发过程中就需要一套算法用来组合多个规格属性,用来给每个组合定一组封面图和价格 比如某 ...

  7. 基于Vue实现智慧社区电商后台管理系统

    作者主页:编程指南针 作者简介:Java领域优质创作者.CSDN博客专家 .掘金特邀作者.多年架构师设计经验.腾讯课堂常驻讲师 主要内容:Java项目.前端项目.小程序开发.Python开发.大数据和 ...

  8. Axure通用版电商后台管理系统+通用版移动端商城商户端+电商管理系统+对账管理+消息管理+内容管理+运营管理、会员管理、订单管理、促销管理、财务管理+通用版商城前后端电商系统+电商用户数据大屏看板

    作品介绍:Axure通用版电商后台管理系统+通用版移动端商城商户端+电商管理系统+对账管理+消息管理+内容管理+运营管理.会员管理.订单管理.促销管理.财务管理+通用版商城前后端电商系统+电商用户数据 ...

  9. 电商生鲜网站开发(四)——后台开发:商品模块-图片上传/多条件拼接sql

    电商生鲜网站开发(四)--后台开发:商品模块-图片上传/多条件拼接sql 增加商品 上传图片 更新商品 删除商品 批量上下架 图片上传功能 文件名UUID 通用唯一识别码(Universally Un ...

最新文章

  1. linux snmp设置报警次数,CentOS/RHEL 6下禁止重复的SNMP连接日志
  2. 使用Nomad构建弹性基础架构: 容错和中断恢复
  3. QT pro文件解析
  4. python数据库增删改查_python实现数据库增删改查
  5. Swift - RunTime(动态性) 问题 浅析
  6. 未来 10 年,物联网将成为主流!
  7. delphi 的 pos 函数 对中文支持不好。
  8. 特斯拉model3中控屏怎么关_对话特斯拉首席设计师Franz:设计为效率服务
  9. STC15单片机使用AT命令的C语言编程
  10. 数据类型不一致: 应为 NUMBER, 但却获得 BINARY
  11. picgo设置gitee图床
  12. flash debug版本
  13. 【Python黑科技】背单词的小程序之我爱记单词(保姆级图文+实现代码)
  14. 超微服务器 通电自动启动,让主板一通电就自动开机的方法
  15. 原始股的股份怎么进行分红
  16. SaaS系统权限体系设计
  17. ABAP报表程序结构框架
  18. JAVA权重算法(如Dubbo的负载均衡权重)
  19. 字体图标 fa fa html5,Font Awesome 4.2.0的所有图标参考
  20. Unreal Engine 4 学习总动员读书笔记

热门文章

  1. js 图片上传传给后台的几种格式,formData,base64,file,blob流
  2. jquery-ui如何引入
  3. 乌云安全所有资料(百度云打包)pdf
  4. 迅速恢复精力的N个技巧
  5. 浮点数运算计算机在线,双浮点运算计算器
  6. 超轻量级中文ocr,OcrLiteOnnx文字识别
  7. Uber乱世布局,反Amazon联盟,视频行业转折点
  8. android开发 wifi功率,一种基于Android系统的功耗计算方法与流程
  9. DHCP relay的工作过程以及DHCP option82的作用
  10. 音乐变成伴奏软件 怎么把歌曲变成伴奏、消除人音