taxonomist

Group objects into categories based on an object property.

Usage no npm install needed!

<script type="module">
  import taxonomist from 'https://cdn.skypack.dev/taxonomist';
</script>

README

Taxonomist.js npm Version Build Status Coverage Status

Group objects into categories based on an object property.

Usage

var arr = [
  { fields: { tags: ['foo', 'bar'] } },
  { fields: { tags: ['baz'] } },
  { fields: { tags: 'bar' } }
];

// categorise by property
taxonomist(arr, function(obj, i) {
  return obj.fields.tags;
});
/* {
 *   foo: [ arr[0] ],
 *   bar: [ arr[0], arr[2] ],
 *   baz: [ arr[1] ]
 * }
 */

// modify the value used to perform the categorisation
taxonomist(arr, 'fields.tags', function(tag, i) {
  return tag[0]; // categorise according to the first letter of each `tag`
});
/* {
 *   f: [ arr[0] ],
 *   b: [ arr[0], arr[1], arr[2] ]
 * }
 */

API

taxonomist(arr, prop [, fn])

Categorise objects in arr based on the property specified by prop.

  • arr — An array we want to categorise.
  • prop — Either a dot-delimited string or a function.
    • If a dot-delimited string, it must correspond to the categories of each object in arr.
    • If a function, it will be passed each object in arr, in addition to that object’s index. The function must return the categories of that particular object.
  • fn — A function (optional; defaults to the identity function) for modifying the value used to perform the categorisation. It is passed each category of each object.

Installation

Install via npm:

$ npm i --save taxonomist

Changelog

  • 2.3.0
    • Allow prop to be a function
  • 2.2.0
    • Migrate tests to tape
  • 2.1.0
    • Add fn for modifying the value used for categorising the objects in arr
  • 2.0.0
    • Drop support for returning indices in the result
    • The value corresponding to prop in each object need not be an array
  • 1.0.0
    • Initial release

License

MIT license