Javascript實現笛卡兒積算法

在根據商品屬性計算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

相關文章
相關標籤/搜索