rofrischmann/elodin

View on GitHub
utils/reason/src/getArrayCombinations.js

Summary

Maintainability
A
0 mins
Test Coverage
// this is a basic cartesian function
export default function getArrayCombinations() {
  var r = [],
    arg = arguments,
    max = arg.length - 1
  function helper(arr, i) {
    for (var j = 0, l = arg[i].length; j < l; j++) {
      var a = arr.slice(0) // clone arr
      a.push(arg[i][j])
      if (i == max) r.push(a)
      else helper(a, i + 1)
    }
  }
  helper([], 0)
  return r
}