Skip to content

Sort JSON arrays, create sorted JSON arrays (binary search, localeCompare for strings).

License

Notifications You must be signed in to change notification settings

Streemo/docsort

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

docsort

Sort JSON arrays, create sorted JSON arrays. Very simple, lightweight library. Uses recursive document comparison to determine which "comes first" (makes use of localeCompare for strings). Uses binary search for inserts and lookups. Documents in the array should share at least the structure of the sort specifier. For example, if a sort specifier is trying to sort by name, then the documents in the array should at least implement a name field, etc. Documents which "intersect" at the sort specifier should be sortable together, theoretically, but I have not tested that. For most cases, your documents will likely have the same structure anyways.

can sort documents based on nested fields.

import { sortIndex, push, pull } from "docsort";

let sortSpecifier = {
  airplaneGroup: -1 //first sort by airplaneGroup "Z" to "A".
  moreInfo: {
    age: 1 //then sort by age, increasing, for items in the same airplaneGroup.
  }
}

let someSortedArray = [
  {
    name: "Bob", 
    moreInfo: {
      score: 2.718,
      age: 31
    },
    airplaneGroup: "A"
  },
  //similar documents in this array...
]

let rob = {
  name: "Rob",
  moreInfo: {
    score: 3.1415926,
    age: 3
  },
  airplaneGroup: "B"
}
//this is the index that rob should be at in the array.
let indexOfRobInTheArray = sortIndex(someArray,rob,sortSpecifier)
//insert rob into the array
push(someArray, rob, sortSpecifier);
//pull rob from the array
pull(someArray, rob, sortSpecifier);

push can be used to construct sorted arrays from unsorted arrays.

import { push } from "docsort";

let sortedList = [];
someUnsortedList.forEach(function(document){
  push(sortedList, document, someDesiredSortSpecifier);
})

//quickly update the sorted list when you get new data
someUnsortedList.on('data', function(newDocument){
  push(sortedList, newDocument, someDesiredSortSpecifier);
})

About

Sort JSON arrays, create sorted JSON arrays (binary search, localeCompare for strings).

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published