Advertisement
Pauan

Cartesian Product in JavaScript

Jan 1st, 2014
1,600
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function cartProd() {
  2.   var args = [].slice.call(arguments)
  3.     , end  = args.length - 1
  4.  
  5.   var result = []
  6.  
  7.   function addTo(curr, start) {
  8.     var first = args[start]
  9.       , last  = (start === end)
  10.  
  11.     for (var i = 0; i < first.length; ++i) {
  12.       var copy = curr.slice()
  13.       copy.push(first[i])
  14.  
  15.       if (last) {
  16.         result.push(copy)
  17.       } else {
  18.         addTo(copy, start + 1)
  19.       }
  20.     }
  21.   }
  22.  
  23.   if (args.length) {
  24.     addTo([], 0)
  25.   } else {
  26.     result.push([])
  27.   }
  28.   return result
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement