在根據商品屬性計算SKU時,一般會對商品不一樣選項的不一樣屬性進行笛卡兒積運算。spa
這是在NodeJs裏的實現版本,目前用在生產環境。code
1 function cartesian(elements) { 2 if (!Array.isArray(elements)) 3 throw new TypeError(); 4 var end = elements.length - 1, 5 result = []; 6 7 function addTo(curr, start) { 8 var first = elements[start], 9 last = (start === end); 10 for (var i = 0; i < first.length; ++i) { 11 var copy = curr.slice(); 12 copy.push(first[i]); 13 if (last) { 14 result.push(copy); 15 } else { 16 addTo(copy, start + 1); 17 } 18 } 19 } 20 21 if (elements.length) 22 addTo([], 0); 23 else 24 result.push([]); 25 return result; 26 }
運行demo:blog