基于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 相关文章推荐
List all the Databases on a SQL Server
Jun 21 Javascript
仿百度的关键词匹配搜索示例
Sep 25 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
Dec 15 Javascript
初识Node.js
Mar 20 Javascript
详解JavaScript对象序列化
Jan 19 Javascript
JS遍历页面所有对象属性及实现方法
Aug 01 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
Mar 22 Javascript
JavaScript实现开关等效果
Sep 08 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
Sep 18 Javascript
15个顶级开源JavaScript框架和库
Oct 10 Javascript
ES6 Promise对象的应用实例分析
Jun 27 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
Dec 01 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轻松实现中英文混排字符串截取
2014/05/28 PHP
Yii框架form表单用法实例
2014/12/04 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
PHP实现15位身份证号转18位的方法分析
2019/10/16 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
javascript json2 使用方法
2010/03/16 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
JavaScript 表单处理实现代码
2015/04/13 Javascript
jQuery 遍历函数详解
2015/07/05 Javascript
CSS javascript 结合实现悬浮固定菜单效果
2015/08/23 Javascript
基于jQuery+PHP+Mysql实现在线拍照和在线浏览照片
2015/09/06 Javascript
JQuery实现网页右侧随动广告特效
2016/01/17 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
微信小程序 基础组件与导航组件详细介绍
2017/02/21 Javascript
JavaScript实现无穷滚动加载数据
2017/05/06 Javascript
angularjs路由传值$routeParams详解
2020/09/05 Javascript
简化版的vue-router实现思路详解
2018/10/19 Javascript
JS实现电商商品展示放大镜特效
2020/01/07 Javascript
vant 时间选择器--开始时间和结束时间实例
2020/11/04 Javascript
Python本地与全局命名空间用法实例
2015/06/16 Python
python访问mysql数据库的实现方法(2则示例)
2016/01/06 Python
Python常用知识点汇总
2016/05/08 Python
关于django 1.10 CSRF验证失败的解决方法
2019/08/31 Python
Tensorflow轻松实现XOR运算的方式
2020/02/03 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
Python xpath表达式如何实现数据处理
2020/06/13 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
python中re模块知识点总结
2021/01/17 Python
海淘零差价,宝贝全球购: 宝贝格子
2016/08/24 全球购物
农村葬礼主持词
2014/03/31 职场文书
2015初中政教处工作总结
2015/07/21 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
找规律教学反思
2016/02/23 职场文书
《西门豹》教学反思
2016/02/23 职场文书
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL