首页 > 代码库 > [电商]商品发布规格组合算法

[电商]商品发布规格组合算法

 1 //组合
 2 function generateGroup(arr) {
 3     //初始化结果为第一个数组
 4     var result= arr[0];
 5     //从下标1开始遍历二维数组
 6     for(var i=1;i<arr.length;i++){
 7         //使用临时遍历替代结果数组长度(这样做是为了避免下面的循环陷入死循环)
 8         var size= result.length;
 9         //根据结果数组的长度进行循环次数,这个数组有多少个成员就要和下一个数组进行组合多少次
10         for(var j=0;j<size;j++){
11             //遍历要进行组合的数组
12             for(var k=0;k<arr[i].length;k++){
13                 //把组合的字符串放入到结果数组最后一个成员中
14                 //这里使用下标0是因为当这个下标0组合完毕之后就没有用了,在下面我们要移除掉这个成员
15                 result.push(result[0]+","+arr[i][k]);
16             }
17             //当第一个成员组合完毕,删除这第一个成员
18             result.shift();
19         }
20     }
21     //打印结果
22     console.log(result);
23 }
24 
25 generateGroup([["红色","蓝色"],["X","XL"],["10m","20m"]]);

商品发布规格组合这块一直是我头疼的问题,毕竟是第一次接触电商项目开发,公司也没有大牛带队,项目开发成员总共就4个人,两个前端两个后端,商品发布这块相对其他页面比较麻烦,于是商品发布前端后端都被我承包了。。

我们这个项目开发团队,看起来更像是个研发团队了,什么都不懂,什么都是瞎搞。。哎,说多了都是悲伤

说下我的思路:

  开始时建立一个变量result,并把arr的第一个数组成员(arr是一个二维数组)赋值给它,然后把result作为基础依次与后面的数组成员进行组合,始终以result第0个成员去和目标组合,当组合完毕确定不再使用时移除掉这个下标为0的成员,这样最终result里只保留下了有用的数据,这里有点像是队列,先进先出的意思。

  例如:

  有数据:{a,b}{c,d}{e,f,g}

  初始化:result={a,b}

  第一次组合得到:a_c,a_d本轮组合结束后result为{a,b,a_c,a_d},删除a后result为{b,a_c,a_d},进行下一轮..

  第N次组合依次...

这就是我的思路,或许有更好的方法,但这是我想破了头才蒙出来的方法,如果你有更好的方式,请推荐给我,谢谢。

[电商]商品发布规格组合算法