vue通过笛卡儿积实现sku库存配置

  • 目标
  • 注意

目标

通过页面上渲染出来的动态属性 实现sku库存配置

将已选择的所有属性,通过笛卡儿积实现sku库存配置
以两个属性为例子,举例说明:
1x1:
白色
S
结合之后就是
[白色,S]

 this.selectCheckArr=[[{"attrId": 0,"attrName": "颜色","attrValueId": 00,"attrValueName": "白色"}],[{"attrId": 1,"attrName": "大小","attrValueId": 11,"attrValueName": "S"}]
]this.selectCheckArr = this.getProducts(this.selectCheckArr)console.log(this.selectCheckArr)/** 输出:[[{"attrId": 0,"attrName": "颜色","attrValueId": 00,"attrValueName": "白色"},{"attrId": 1,"attrName": "大小","attrValueId": 11,"attrValueName": "S"}]
]
**/

1x2
白色 黄色
S
结合之后就是
[白色,S ],[黄色,S ]

 this.selectCheckArr=[[{"attrId": 0,"attrName": "颜色","attrValueId": 00,"attrValueName": "白色"},{"attrId": 0,"attrName": "颜色","attrValueId": 01,"attrValueName": "黄色"}],[{"attrId": 1,"attrName": "大小","attrValueId": 11,"attrValueName": "S"}]
]this.selectCheckArr = this.getProducts(this.selectCheckArr)console.log(this.selectCheckArr)/** 输出: [[{"attrId": 0,"attrName": "颜色","attrValueId": 00,"attrValueName": "白色"},{"attrId": 1,"attrName": "大小","attrValueId": 11,"attrValueName": "S"}],[{"attrId": 0,"attrName": "颜色","attrValueId": 01,"attrValueName": "黄色"},{"attrId": 1,"attrName": "大小","attrValueId": 11,"attrValueName": "S"}]
]
**/

2x2
白 黄
S M
结合之后就是
[白色,S ],[白色,M ],[黄色,S ],[黄色,M ]

 this.selectCheckArr= [[{"attrId": 0,"attrName": "颜色","attrValueId": 00,"attrValueName": "白色"},{"attrId": 0,"attrName": "颜色","attrValueId": 01,"attrValueName": "黄色"}],[{"attrId": 1,"attrName": "大小","attrValueId": 11,"attrValueName": "S"},{"attrId": 1,"attrName": "大小","attrValueId": 12,"attrValueName": "M"}]
]this.selectCheckArr = this.getProducts(this.selectCheckArr)console.log(this.selectCheckArr)/** 输出: [[{"attrId": 0,"attrName": "颜色","attrValueId": 00,"attrValueName": "白色"},{"attrId": 1,"attrName": "大小","attrValueId": 11,"attrValueName": "S"}],[{"attrId": 0,"attrName": "颜色","attrValueId": 00,"attrValueName": "白色"},{"attrId": 1,"attrName": "大小","attrValueId": 12,"attrValueName": "M"}],[{"attrId": 0,"attrName": "颜色","attrValueId": 01,"attrValueName": "黄色"},{"attrId": 1,"attrName": "大小","attrValueId": 11,"attrValueName": "S"}],[{"attrId": 0,"attrName": "颜色","attrValueId": 01,"attrValueName": "黄色"},{"attrId": 1,"attrName": "大小","attrValueId": 12,"attrValueName": "M"}]
]
**/

笛卡儿积方法

    // 笛卡儿积getProducts(specs) {if (!specs || specs.length == 0) {return [];} else {return joinSpec([[]], specs, 0, specs.length - 1);}function joinSpec(prevProducts, specs, i, max) {var currentProducts = [],currentProduct, currentSpecs = specs[i];if (i > max) {return prevProducts;}prevProducts.forEach(function (prevProduct) {currentSpecs.forEach(function (spec) {currentProduct = prevProduct.slice(0);currentProduct.push(spec);currentProducts.push(currentProduct);});});return joinSpec(currentProducts, specs, ++i, max);}},

注意

this.getProducts()的入参,需与博主保持一致(数组对象),否则会有问题哦~
如果是1x1 ,就是总共生成1条
[ [ { } ] , [ { } ] ],变成 [ [ { } , { } ] ]
如果是2x1 ,就是总共生成2条
[ [ { } ,{ } ] , [ { } ] ] 变成 [ [ { } ,{ } ] , [ { } ,{ } ] ]

vue通过笛卡儿积实现sku库存配置相关推荐

  1. Vue 的电商 SKU 表单配置组件

    下载地址Vue 的电商 SKU 表单配置组件,多条件筛选计算价格和库存. dd:

  2. vue实现计算商品sku笛卡尔积(干活)

    在 Vue 中计算商品 SKU 的笛卡尔积,您可以按照以下步骤进行: 定义商品属性和属性值 在 Vue 组件中定义商品属性和属性值,可以使用对象或数组来表示: // 商品属性 const attrib ...

  3. vue脚手架解决跨域问题-------配置反向代理

    vue脚手架解决跨域问题-------配置反向代理 参考文章: (1)vue脚手架解决跨域问题-------配置反向代理 (2)https://www.cnblogs.com/zbx-boke/p/9 ...

  4. laravel + Vue 前后端分离 之 项目配置 - 开发环境

    既然你来到查看这篇文章,那么你应该知道PHP 版本 >=7. 接着看一下目录 |-blog |-- api |-- front 目录外部很简单,,不多说了,赶紧看重点 配置Laravel 作为前 ...

  5. Vue项目开发需要准备和配置些什么环境?

    Vue项目开发需要准备和配置些什么环境? 一.首先需要安装node.js 下载:安装node.js链接 安装在D盘 window+R,输入cmd,打开命令提示符窗口,输入: npm -v 检测是否安装 ...

  6. Vue环境搭建(node安装,环境配置,运行项目)

    Vue环境搭建(node安装,环境配置,运行项目) 一.安装node 1.去官网下载node之后,推荐安装稳定版本(LTS)node官网下载地址 2.查看node安装成功否 node -v 查看nod ...

  7. 淘宝sku库存(sku库存200)采集

    最近发现淘宝系接口内的sku库存值有变动. 通过查验APP和Web,之前在客户端显示具体库存的文案,已经从"库存:51612件",变为"库存:有货". 找到规律 ...

  8. vue cli4 vue2 多页面打包配置与坑点

    前言: 一直以来都没用上多页面打包,这次遇到个业务特殊情况,想到用多页面打包的方案来解决,于是按照vue cli 官方文档在自己的项目上配置跑了一下,果然一跑就是一堆问题.只能说事情总是比我们想象的要 ...

  9. vue开发微信公众号可视化配置菜单

    vue开发微信公众号可视化配置菜单 其实一开始我也是懵逼的,我搞不懂微信公众号后台其实已经很好用了,为什么还需要开发一个模仿微信公众号后台的系统呢?而且微信公众号可以绑定多个运营者,都可以和管理员一样 ...

最新文章

  1. 项目问题记录20170702
  2. java解压文件、复制文件、删除文件代码示例
  3. boost::noinit_adaptor用法实例
  4. python findall函数_python正则表达式之中的findall函数是什么?
  5. 四年级信息技术认识计算机,四年级信息技术第三课信息工具知多少
  6. Java对数组的操作(二)——集合与数组的切换
  7. js中split,splice,slice方法之间的差异。
  8. 查看服务器大文件,linux 查看服务器大文件
  9. [BZOJ1668][Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富
  10. 软件工程概论网站系统开发基础及目标概述
  11. 风控中英文术语手册(银行_消费金融信贷业务)_version6
  12. 《iRedMail邮件服务器搭建详细过程》
  13. 给电脑设置视力保护色
  14. ERD Commander 2005 使用教程
  15. grok logstash配置_logstash grok匹配
  16. 获取连续生成的100-200范围的随机数,直到生成的随机数与前一个随机数相等,停止运行
  17. 华硕笔记本全硬盘恢复原厂状态 实机操作,MYASUS IN WINRE恢复,ASUS RECOVERY恢复
  18. UI设计 调色板的应用
  19. 【开服必备】用Python优雅的生成用户验证码
  20. IAR for MSP430 7_12在线调试不能打断点解决方法

热门文章

  1. jquey学习篇 第一篇
  2. 高数课后习题讲解下册 pdf(免费)
  3. 马云等10位大佬心酸往事:9天9夜未睡、装姑娘陪聊、遭人追杀、一夜白头…
  4. Vmare horizon client 5.0安装过程中自动取消
  5. 如何轻松停用WordPress插件(入门指南)
  6. 24c32,i2c原理
  7. 使用console.time打印代码运行时间
  8. java ——StringBuffer与StringBuilder
  9. Java8中文件转Base64和Base64转文件
  10. 6-1免疫算法(IA)原理