标签:算法 长度 length group 这就是我 style color blog result
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次组合依次...
这就是我的思路,或许有更好的方法,但这是我想破了头才蒙出来的方法,如果你有更好的方式,请推荐给我,谢谢。
标签:算法 长度 length group 这就是我 style color blog result
原文地址:http://www.cnblogs.com/hihtml5/p/6081145.html