Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

groupValues

Group elements as arrays associated with distinct keys.

Usage

var groupValues = require( '@stdlib/array/base/group-values' );

groupValues( x, groups )

Groups elements as arrays associated with distinct keys.

var x = [ 'beep', 'boop', 'foo', 'bar' ];
var groups = [ 'b', 'b', 'f', 'b' ];

var out = groupValues( x, groups );
// returns { 'b': [ 'beep', 'boop', 'bar' ], 'f': [ 'foo' ] }

Notes

  • Each value in groups should resolve to a value which can be serialized as an object key. As a counterexample,

    var x = [ 'beep', 'boop', 'foo', 'bar' ];
    var groups = [ {}, {}, {}, {} ];
    
    var out = groupValues( x, groups );
    // returns { '[object Object]': [ 'beep', 'boop', 'foo', 'bar' ] }

    while each "group" is unique, all input array elements resolve to the same group because each group identifier serializes to the same string.

Examples

var discreteUniform = require( '@stdlib/random/array/discrete-uniform' );
var take = require( '@stdlib/array/base/take-indexed' );
var groupValues = require( '@stdlib/array/base/group-values' );

// Define an initial array of values:
var values = [ 'beep', 'boop', 'foo', 'bar', 'woot', 'woot' ];

// Sample from the initial array to generate a random collection:
var indices = discreteUniform( 100, 0, values.length-1, {
    'dtype': 'generic'
});
var x = take( values, indices );
// returns [...]

// Randomly assign collection values to groups:
var groups = discreteUniform( x.length, 0, values.length, {
    'dtype': 'generic'
});

// Group the values:
var out = groupValues( x, groups );
// returns {...}

console.log( out );