Code Monkey home page Code Monkey logo

coordinate-set's Introduction

CoordinateSet

A specialist Set for handling longitude and latitude coordinate arrays. The easiest way to understand the use case for this library is the following code snippet:

const set = new Set();
set.add([32.95, 83.31]);
set.add([32.95, 83.31]);
expect(set.size).toBe(2);

This behaves as we would expect for a JavaScript Set - it creates two entries for each Array reference. In simple terms this library allows coordinate Arrays (of type [number, number], where [0] is a valid longitude and [1] is valid latitude, which are often seen in formats like GeoJSON) to be treated as values rather than references, like so:

const set = new CoordinateSet();
set.add([32.95, 83.31]);
set.add([32.95, 83.31]);
expect(set.size).toBe(1);

The API matches the original Set API as closely as possible. The library also does basic validation on the input array to make sure it is a valid longitude, latitude pair.

Install

npm install coordinate-set

Usage

import { CoordinateSet } from "./src/coordinate-set";

const coordinateSet = new CoordinateSet();

coordinateSet.add([51.509865, -0.118092]); // undefined
coordinateSet.add([51.509865, -0.118092]); // undefined
coordinateSet.has([42.509865, -0.231312]); // false
coordinateSet.add([42.509865, -0.231312]); // undefined
coordinateSet.size; // 2
coordinateSet.delete([51.509865, -0.118092]); // true
coordinateSet.size; // 1
coordinate.clear(); // undefined
coordinateSet.size; // 0

coordinateSet.forEach((value, index, set) => {
  // value: [51.509865, -0.118092]
  // index: 0
  // set: coordinateMap
});

// Spread syntax
const spread = [...coordinateSet];

// for...of
const values = [];
for (let entry of coordinateSet) {
  values.push(entry);
}

License

MIT

coordinate-set's People

Contributors

jameslmilner avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.