基于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 相关文章推荐
jQuery实现id模糊查询的小例子
Mar 19 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
Nov 17 Javascript
JS选项卡动态替换banner图片路径的方法
May 11 Javascript
JavaScript 对象深入学习总结(经典)
Sep 29 Javascript
javascript字符串函数汇总
Dec 06 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
Jun 12 Javascript
JSONP跨域请求
Mar 02 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
Apr 01 Javascript
微信小程序中的onLoad详解及简单实例
Apr 05 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
Apr 04 Javascript
使用原生JS实现滚轮翻页效果的示例代码
May 31 Javascript
TypeScript实用技巧 Nominal Typing名义类型详解
Sep 23 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/01/20 PHP
laravel 操作数据库常用函数的返回值方法
2019/10/11 PHP
Yii 框架入口脚本示例分析
2020/05/19 PHP
jQuery中与toggleClass等价的程序段 以及未来学习的方向
2010/03/18 Javascript
web网页按比例显示图片实现原理及js代码
2013/08/09 Javascript
node.js正则表达式获取网页中所有链接的代码实例
2014/06/03 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
如何用JavaScript定义一个类
2014/09/12 Javascript
js变形金刚文字特效代码分享
2015/08/20 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
2015/09/06 Javascript
Javascript获取图片原始宽度和高度的方法详解
2016/09/20 Javascript
详解使用fetch发送post请求时的参数处理
2017/04/05 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
js HTML5 canvas绘制图片的方法
2017/09/08 Javascript
JS监控关闭浏览器操作的实例详解
2017/09/12 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
vue引入ueditor及node后台配置详解
2018/01/03 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
2018/02/08 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
2019/04/25 Javascript
Python多进程并发(multiprocessing)用法实例详解
2015/06/02 Python
人机交互程序 python实现人机对话
2017/11/14 Python
Python实现的桶排序算法示例
2017/11/29 Python
详解Python中的正则表达式
2018/07/08 Python
python实现同一局域网下传输图片
2020/03/20 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
2020/03/23 Python
Python3爬虫发送请求的知识点实例
2020/07/30 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
Dockers美国官方网站:卡其裤、男士服装、鞋及配件
2016/11/22 全球购物
物业保安员岗位职责制度
2014/01/30 职场文书
订货会主持词
2015/07/01 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书
小学语文教师竞聘演讲稿范文
2019/08/09 职场文书
导游词之沈阳植物园
2019/11/30 职场文书
spring boot中nativeQuery的用法
2021/07/26 Java/Android