sort-distance

2.1.1 • Public • Published

sort-distance

package version package license make a pull request

Sort array of points based on how close they are to a givin point

Table of Contents

Install

This project uses node and npm.

$ npm install sort-distance

Usage

Call the function providing the origin point and an array of other points as arguments:

const sortDistance = require("sort-distance");
 
const points = [
    { x: 3, y: 5 },
    { x: 80, y: 34 },
    { x: 3, y: 7 },
    { x: 22, y: 88 },
    { x: 100, y: 60 },
];
 
const origin = { x: 50, y: 50 };
 
console.log(sortDistance(origin, points));
 
//[ { x: 80, y: 34, distance: 34 },
//  { x: 22, y: 88, distance: 47.20169488482379 },
//  { x: 100, y: 60, distance: 50.99019513592785 },
//  { x: 3, y: 7, distance: 63.702433234531945 },
//  { x: 3, y: 5, distance: 65.06919393998976 } ]

You can also change the name of the x and y:

const sortDistance = require("sort-distance");
 
const points = [
    { longitude: 3, latitude: 5 },
    { longitude: 80, latitude: 34 },
    { longitude: 3, latitude: 7 },
    { longitude: 22, latitude: 88 },
    { longitude: 100, latitude: 60 },
];
 
const opts = {
    yName: "latitude",
    xName: "longitude",
};
 
const origin = { longitude: 4, latitude: 22 };
 
console.log(sortDistance(origin, points, opts));
 
//[ { longitude: 3, latitude: 7, distance: 15.033296378372908 },
//  { longitude: 3, latitude: 5, distance: 17.029386365926403 },
//  { longitude: 22, latitude: 88, distance: 68.41052550594829 },
//  { longitude: 80, latitude: 34, distance: 76.94153624668537 },
//  { longitude: 100, latitude: 60, distance: 103.24727599312246 } ]

The object is cloned and the distance from the origin point is added as an property of the new object.

API

The module exports a single function with the signature:

sortDistance(originPoint, arrayOfPoints, options);

originPoint

Is an object containing x and y properties.

arrayOfPoints

Is an array of objects containing x and y properties.

options

The options available and their defaults:

 
{
    yName: 'y', // Name of the y property to look for on the object
    xName: 'x' // Name of the x property to look for on the object
}
 

Contribute

  1. Fork it and create your feature branch: git checkout -b my-new-feature
  2. Commit your changes: git commit -am 'Add some feature'
  3. Push to the branch: git push origin my-new-feature
  4. Submit a pull request

License

MIT

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 2.1.1
    67
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 2.1.1
    67
  • 2.1.0
    0
  • 2.0.0
    1

Package Sidebar

Install

npm i sort-distance

Weekly Downloads

68

Version

2.1.1

License

MIT

Unpacked Size

6.99 kB

Total Files

9

Last publish

Collaborators

  • fabrianibrahim