基于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 相关文章推荐
XML的代替者----JSON
Jul 21 Javascript
Javascript 学习书 推荐
Jun 13 Javascript
javascript仿qq界面的折叠菜单实现代码
Dec 12 Javascript
JavaScript 验证码的实例代码(附效果图)
Mar 22 Javascript
在每个匹配元素的外部插入新元素的方法
Dec 20 Javascript
Javascript让DEDECMS告别手写Tag
Sep 01 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
Oct 25 Javascript
JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法
Aug 19 Javascript
Ajax实现不刷新取最新商品
Mar 01 Javascript
使用vue构建一个上传图片表单
Jul 04 Javascript
微信小程序通过js实现瀑布流布局详解
Aug 28 Javascript
Taro小程序自定义顶部导航栏功能的实现
Dec 17 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
星际初学者游戏中永远要做的事
2020/03/04 星际争霸
手把手教你使用DedeCms的采集的图文教程
2007/03/11 PHP
对Session和Cookie的区分与解释
2007/03/16 PHP
php通过array_merge()函数合并关联和非关联数组的方法
2015/03/18 PHP
codeigniter发送邮件并打印调试信息的方法
2015/03/21 PHP
php实现的简单检验登陆类
2015/06/18 PHP
yum命令安装php7和相关扩展
2016/07/04 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
jQuery仿Excel表格编辑功能的实现代码
2013/05/01 Javascript
JavaScript创建一个object对象并操作对象属性的用法
2015/03/23 Javascript
JS或jQuery获取ASP.NET服务器控件ID的方法
2015/06/08 Javascript
javascript自定义in_array()函数实现方法
2015/08/03 Javascript
JS原型对象的创建方法详解
2016/06/16 Javascript
json对象与数组以及转换成js对象的简单实现方法
2016/06/24 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
2017/01/08 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
2017/09/19 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
2017/09/22 Javascript
python实现批量视频分帧、保存视频帧
2019/05/31 Python
python flask几分钟实现web服务的例子
2019/07/26 Python
对python中UDP,socket的使用详解
2019/08/22 Python
Python中常用的高阶函数实例详解
2020/02/21 Python
基于python tkinter的点名小程序功能的实例代码
2020/08/22 Python
CSS3——齿轮转动关键代码
2013/05/02 HTML / CSS
马来西亚网上美容店:Hermo.my
2017/11/25 全球购物
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
事业单位分类改革实施方案
2014/03/21 职场文书
爱我中华教学反思
2014/04/28 职场文书
消防标语大全
2014/06/07 职场文书
实现中国梦思想汇报2014
2014/09/13 职场文书
三好学生评语大全
2014/12/29 职场文书
2016继续教育研修日志
2015/11/13 职场文书
基于tensorflow权重文件的解读
2021/05/26 Python
Java 写一个简单的图书管理系统
2022/04/26 Java/Android