欢迎光临
我们一直在努力

js数组交差获取所有组合,实现商品多规格或sku的组合

本偏文章记录一下用js实现对数组交差获取数组有多少种组合,如商品的中sku或商品规格的组合一样。

在商品中经常有sku的设计 , 如颜色/尺寸等 。 后台控制时需霜选择  需要设置 如:白色_m号 10个  白色XL号 20个等 。

看效果

这里我是对数据进行交叉求出颜色规格的所有组合情况:

先上一段代码

function isArray(obj) {
                if (typeof obj == "object" && obj.constructor === Array) {
                    return true;
                }
                return false;
            }

            function group(arr) {
                if (arr.length === 1) {
                    return arr.shift(); //树最底层的叶节点直接返回
                }
                let start_tree = arr.shift(); //递归取出每一层的所有可能与下层拼接
                let tree = group(arr);
                let skuArr = []
                start_tree.forEach((item, index) => {
                    tree.forEach((item_t, index_t) => {
                        item_t = isArray(item_t) ? item_t : [item_t]
                        skuArr.push([...[item], ...item_t]);
                    })
                })
                return skuArr;
            }

            //示例:
            let arr = [["iphone6", "iphone7"], ["白色", "黑色"], ["64G", "128G"]];
            group(arr);



运行结果如下
0: (3) ["iphone6", "白色", "64G"]
1: (3) ["iphone6", "白色", "128G"]
2: (3) ["iphone6", "黑色", "64G"]
3: (3) ["iphone6", "黑色", "128G"]
4: (3) ["iphone7", "白色", "64G"]
5: (3) ["iphone7", "白色", "128G"]
6: (3) ["iphone7", "黑色", "64G"]
7: (3) ["iphone7", "黑色", "128G"]

 

这样就组合好了  剩下根据自己的业务去存储的数据库就可以了。

 

赞(1)
未经允许不得转载:自游互动 » js数组交差获取所有组合,实现商品多规格或sku的组合
分享到: 更多 (0)

自由技术,自由自在

项目合作联系我们