DEV Community

incessantmeraki
incessantmeraki

Posted on • Edited on

Enumerating Arrays in JavaScript

Enumeration is a process of arranging or selecting elements from an array in a certain way. They are also called permutation and combination. Let's look at several ways of enumerating an array in JavaScript

Enumerating all Arrangement

Suppose there are k positions to be filled and n elements available in an array to fill these positions. Each position can take any values from n elements. Then, there are nk different ways of filling the positions. Let's look at ways of evaluating result of this kind of enumeration.

  var enumAll = require('enum-all')

  var arr = ['a','b','c','1','2','3']

  //Generate all three letter password using characters from arr

  var output = enumAll(arr, 3)
  console.log(output) //['aaa', 'baa', 'caa' .... 213 more items]

Enter fullscreen mode Exit fullscreen mode

Enumerating Power Set

Power set is a set containing all possible sub-set of elements in an array. That is, given an array containing n elements its powerset contains all possible combinations of elements of various sizes.The size of powerset is 2n and let's look at ways of evaluating powerset of elements in an array.

  var powerSet = require('enum-powerset')

  var arr = ['Alice', 'Bob', 'Eve']

  //generate powerset of above elements
  var output = powerSet(arr)

  // Prints the powerset of three elements in arr
  console.log(output) 

  // [ [''],
  //   ['Alice'],
  //   ['Bob'],
  //   ['Alice,Bob'],
  //   ['Eve'],
  //   ['Alice,Eve]',
  //   ['Bob,Eve'],
  //   ['Alice,Bob,Eve' ]
  // ]
Enter fullscreen mode Exit fullscreen mode

Enumerating certain combination

Power set contains all possible combinations of elements of various sizes. Suppose you just want combinations of size k from n elements then, this kind of enumeration comes in handy. There are total nck ways of choosing k elements from n elements which equals n!/(k!*(n-k)!) where ! refers to factorial. Let's look at an example of this.

  var nck = require('enum-nck')

  var teams =['united', 'city', 'liverpool']

  //generate all possible football matches between above teams
  var output = nck(teams, 2)

  //prints the result
  console.log(output)
  //[ [ 'united', 'city' ],
  //  [ 'united', 'liverpool' ],
  //  [ 'city', 'liverpool' ], 
  //]
Enter fullscreen mode Exit fullscreen mode

Enumerating permutation

Permutation is a way of evaluating all different ways n elements of an array can be arranged. There are n!(factorial) ways of permutating elements in array if each element is unique. Let's look at way of evaluating permutation of elements.

  var permutate = require('enum-permutate')

  var arr = ['0','1','2']

  //generate permutation of above elements
  var output = permutate(arr)

  //prints output
  console.log(output)
  //[ [ '0', '1', '2' ],
  //  [ '0', '2', '1' ],
  //  [ '1', '0', '2' ],
  //  [ '1', '2', '0' ],
  //  [ '2', '0', '1' ],
  //  [ '2', '1', '0' ] 
  //]
Enter fullscreen mode Exit fullscreen mode

All the above example works in node.js as well as browser (through bundler such as browserify).

Top comments (2)

Collapse
 
jtonzing profile image
Josh Tonzing

Can I suggest you include the output of your console.log's. It will make it easier for the reader to understand what the code is doing.

Collapse
 
incessantmeraki profile image
incessantmeraki

Yea , I think i should do that to make things clear. Thanks for the suggestion!