Javascript实现笛卡儿积算法

在根据商品属性计算SKU时,通常会对商品不同选项的不同属性进行笛卡儿积运算。

这是在NodeJs里的实现版本,目前用在生产环境。

 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:

posted on 2016-10-20 16:48  小小天狼星  阅读(991)  评论(0)    收藏  举报

导航