基于Vue实现电商SKU组合算法问题


Posted in Javascript onMay 29, 2019

前段时间,公司要做“添加商品”业务模块,这也算是电商业务里面的一个难点了。

令我印象最深的不是什么“组合商品”、“关联商品”、“关联单品”,而是商品SKU的组合问题。

这个问题特别有意思,当时虽然大体上组合成功,总是有些小bug解决不了,然后手上又有别的任务就没仔细研究它。

后来过了一个月,空闲下来专门研究了下,终于把问题解决,有必要记录下这次体验。

先看下在业务中的效果(tips: 如看不清可放大浏览器)

基于Vue实现电商SKU组合算法问题

这个相对来说比较麻烦,还涉及到了下面“属性图片”的循环,但关键点还是在SKU组合的代码上面

以下是基于element-ui和vue的精简版demo代码:

html:

<div>SKU组合demo</div>
<div v-for="(v, i) in list" :key="i" class="mt-20">
 <b>{{ v.name }}:</b>
 <el-checkbox-group v-model="checkList[i].list">
 <el-checkbox v-for="(k, j) in v.list" :key="j" :label="k" />
 </el-checkbox-group>
</div>
<div class="mt-20">
 <el-button type="primary" @click="handleClick">确定</el-button>
</div>
<div class="mt-20">
 <el-tag v-for="(item, index) in skuList" :key="index" style="margin:10px 10px;">{{ item }}</el-tag>
</div>

css:

.mt-20 {
 margin-top: 20px;
}

JS:

<script>
export default {
 data() {
 return {
  list: [
  { name: '尺码', list: ['S', 'M', 'L', 'XL', 'XXL'] },
  { name: '颜色', list: ['红色', '黄色', '蓝色', '粉色', '紫色'] },
  { name: '图案', list: ['猫咪', '人物', '飞机', '闪电', '字母'] }
  ],
  checkList: [
  { name: '尺码', list: [] },
  { name: '颜色', list: [] },
  { name: '图案', list: [] }
  ],
  skuArray: [],
  skuList: []
 }
 },
 methods: {
 handleClick() {
  // 先清空数据,保证连续点击按钮,数据不会重复
  this.skuArray = []
  this.skuList = []
  // 将选中的规格组合成一个大数组 [[1, 2], [a, b]...]
  this.checkList.forEach(element => {
  element.list.length > 0 ? this.skuArray.push(element.list) : ''
  })
  // 勾选了规格,才调用方法
  if (this.skuArray.length > 0) {
  this.getSkuData([], 0, this.skuArray)
  } else {
  this.$message.error('请先勾选规格')
  }
 },
 // 递归获取每条SKU数据
 getSkuData(skuArr = [], i, list) {
  for (let j = 0; j < list[i].length; j++) {
  if (i < list.length - 1) {
   skuArr[i] = list[i][j]
   this.getSkuData(skuArr, i + 1, list) // 递归循环
  } else {
   this.skuList.push([...skuArr, list[i][j]]) // 扩展运算符,连接两个数组
  }
  }
 }
 }
}
</script>

效果如下:

基于Vue实现电商SKU组合算法问题

 只要是做电商的小伙伴应该都会遇到这个SKU组合问题吧,希望能对大家有所帮助!

总结

以上所述是小编给大家介绍的基于Vue实现电商SKU组合算法问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
如何使用JS获取IE上传文件路径(IE7,8)
Jul 08 Javascript
js与运算符和或运算符的妙用
Feb 14 Javascript
jQuery实现鼠标经过事件的延时处理效果
Aug 20 Javascript
JQuery异步提交表单与文件上传功能示例
Jan 12 Javascript
微信小程序 swiper制作tab切换实现附源码
Jan 21 Javascript
使用BootStrap实现标签切换原理解析
Mar 14 Javascript
react-router browserHistory刷新页面404问题解决方法
Dec 29 Javascript
详解小程序如何避免多次点击,重复触发事件
Apr 08 Javascript
微信小程序实现传递多个参数与事件处理
Aug 12 Javascript
axios如何取消重复无用的请求详解
Dec 15 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
Sep 10 Javascript
微信小程序组件生命周期的踩坑记录
Mar 03 Javascript
JS学习笔记之闭包小案例分析
May 29 #Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
May 29 #Javascript
elementUI select组件value值注意事项详解
May 29 #Javascript
elementUI select组件使用及注意事项详解
May 29 #Javascript
通过vue手动封装on、emit、off的代码详解
May 29 #Javascript
el-select数据过多懒加载的解决(loadmore)
May 29 #Javascript
JS学习笔记之原型链和利用原型实现继承详解
May 29 #Javascript
You might like
php读取xml实例代码
2010/01/28 PHP
PHP模拟http请求的方法详解
2016/11/09 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
PHP命名空间namespace及use的简单用法分析
2018/08/03 PHP
PHP中rename()函数的妙用讲解
2019/02/28 PHP
jQuery的deferred对象使用详解
2011/08/20 Javascript
jquery css 设置table的奇偶行背景色示例
2014/06/03 Javascript
jquery、js调用iframe父窗口与子窗口元素的方法整理
2014/07/31 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
JavaScript实现16进制颜色值转RGB的方法
2015/02/09 Javascript
jQuery使用toggleClass方法动态添加删除Class样式的方法
2015/03/26 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
2015/06/26 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
原生JS实现简单放大镜效果
2017/02/08 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
解析jquery easyui tree异步加载子节点问题
2017/03/08 Javascript
微信小程序 POST请求的实例详解
2017/09/29 Javascript
Python实现一个转存纯真IP数据库的脚本分享
2017/05/21 Python
python实现的自动发送消息功能详解
2019/08/15 Python
Python Numpy 控制台完全输出ndarray的实现
2020/02/19 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
LN-CC中国:高端男装和女装的奢侈时尚目的地
2019/09/14 全球购物
幼儿园园长自我鉴定
2013/10/22 职场文书
医科学校毕业生自荐信
2013/11/09 职场文书
艺术设计专业个人求职信范文
2013/12/11 职场文书
办公室秘书岗位职责范本
2014/02/11 职场文书
优秀部门获奖感言
2014/02/14 职场文书
十佳文明家庭事迹
2014/05/25 职场文书
毕业生自荐材料范文
2014/12/30 职场文书
2015中秋节慰问信范文
2015/03/23 职场文书
《中国机长》观后感:敬畏生命,敬畏职责
2019/11/12 职场文书
python unittest单元测试的步骤分析
2021/08/02 Python
vue修饰符.capture和.self的区别
2022/04/22 Vue.js