1. 程式人生 > 實用技巧 >電商系統 SKU 設計和優化

電商系統 SKU 設計和優化

原文:
https://gitee.com/macrozheng/mall
https://www.cnblogs.com/shensss/p/12989084.html

前言

初步優化
程式碼比較亂

效果



核心程式碼

 this.value.skuStockList = [];
            let skuList = this.value.skuStockList;
            console.log('sku 規格 選中資料 列印------------------------');
            console.log(this.selectProductAttr);


            // 自定義資料格式
            let skuChecked = [];// 選中的sku
            this.productAttrTableColumn = [];// 商品規格 table列

            this.selectProductAttr.forEach((item, index, array) => {
                if (item.values.length > 0) {
                    this.productAttrTableColumn.push(item);

                    var arrTemp = [];
                    item.values.forEach((item2, index2, array2) => {
                        arrTemp.push({
                            key: item.name,
                            value: item2
                        });
                    });
                    skuChecked.push(arrTemp);
                }                
            });
            console.log('自定義資料格式--------------')
            console.log(skuChecked);

            // 生成sku組合
            var cartesianProductOf = function () {// 原文:https://www.cnblogs.com/shensss/p/12989084.html                
                return Array.prototype.reduce.call(arguments, function (a, b) {
                    var ret = [];
                    a.forEach(function (a) {
                        b.forEach(function (b) {
                            ret.push(a.concat([b]));
                        });
                    });
                    return ret;
                }, [[]]);
            }
            let allSkuArr = cartesianProductOf(...skuChecked)
            console.log('所有的sku組合--------------')
            console.log(allSkuArr)

            // 新增到 商品sku庫存資訊
            allSkuArr.forEach((item, index, array) => {
                skuList.push({
                    spData: JSON.stringify(item)
                });
            });