ktree

4.0.3 • Public • Published

Find efficiently in k-dimensional data

npm version build status coverage status

API

  • new Octree/new Quadtree(array<{[key]}>, <{key?: string = 'coords', transform?: function = x => x, depth?: number = 4}>)
  • add(array<{[key]}>): Add an array of items
  • closest(value): Search for the closest item by key value
  • remove(value): Remove an item from the tree by key value
import colorNames from 'color-names';
import { Octree } from 'ktree'; // colors are 3-dimensional, so use Octree
 
// simple hex-to-rgb (assuming no short formats, else see https://unpkg.com/color-tf/hexToRgb.js)
const hexToRgb = s => [s.slice(-6, -4), s.slice(-4, -2), s.slice(-2)].map(x => parseInt(x, 16));
 
const colors = Object.entries(colorNames).map(([hex, name]) => ({ name, hex }));
 
// Octree constructor needs an array of {[key], ...} objects, where key is configurable
// We'll use 'hex' here, and add a 'transform' property to map those 'hex' values to 3D coordinates
const tree = new Octree(colors, { key: 'hex', transform: hexToRgb });
console.log(tree.closest('5544df')); // { name: 'Majorelle Blue', hex: '#6050dc', d2: 273 }
tree.remove('#6050dc');
console.log(tree.closest('5544df')); // { name: 'Iris', hex: '#5a4fcf', d2: 402 }

Package Sidebar

Install

npm i ktree

Weekly Downloads

6

Version

4.0.3

License

ISC

Unpacked Size

41.5 kB

Total Files

7

Last publish

Collaborators

  • caub