Skip to content

screwdriver-cd/keymbinatorial

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Keymbinatorial

Version Downloads Build Status Open Issues License

Generates a unique combinations of key values by taking a single value from each keys array

Usage

npm install keymbinatorial
var keymbinatorial = require('keymbinatorial');

let objectToCombine = {
    a: ['a', 'b', 'c'],
    c: [1, 2],
    e: [{ a: '1'}, {b: '2'}]
};

// combinations will be an array of unique combinations based on each key and the values in the array
let combinations = keymbinatorial(objectToCombine);

console.log(combinations);
/*
will output:
[
  { a: 'a', c: 1, e: { a: '1' } },
  { a: 'a', c: 1, e: { b: '2' } },
  { a: 'a', c: 2, e: { a: '1' } },
  { a: 'a', c: 2, e: { b: '2' } },
  { a: 'b', c: 1, e: { a: '1' } },
  { a: 'b', c: 1, e: { b: '2' } },
  { a: 'b', c: 2, e: { a: '1' } },
  { a: 'b', c: 2, e: { b: '2' } },
  { a: 'c', c: 1, e: { a: '1' } },
  { a: 'c', c: 1, e: { b: '2' } },
  { a: 'c', c: 2, e: { a: '1' } },
  { a: 'c', c: 2, e: { b: '2' } }
]
*/

The keymbinatorial function takes in an Nx1 object, where N is a set of keys that map to an array.

For each key in the object, the function builds up a list of objects containing a unique combination of keys to values in the array.

Testing

npm test

License

Code licensed under the BSD 3-Clause license. See LICENSE file for terms.

About

Module that generates the unique combinations of key values by taking a single value from each keys array

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published