標籤:演算法 長度 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個人,兩個前端兩個後端,商品發布這塊相對其他頁面比較麻煩,於是商品發布前端後端都被我承包了。。
我們這個項目Team Dev,看起來更像是個研發團隊了,什麼都不懂,什麼都是瞎搞。。哎,說多了都是悲傷
說下我的思路:
開始時建立一個變數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次組合依次...
這就是我的思路,或許有更好的方法,但這是我想破了頭才蒙出來的方法,如果你有更好的方式,請推薦給我,謝謝。
[電商]商品發布規格組合演算法