@ccorcos/ordered-array
v0.0.4
Published
Utilities for working with ordered arrays efficiently using binary search.
Downloads
23
Readme
Ordered Array
Utilities for working with ordered arrays efficiently using binary search.
Getting Started
npm i @ccorcos/ordered-arraytype Item = {key: number, value: number}
type Key = number
const getKey = (item: Item) => item.key
const compareKey = (key1: Key, key2: Key) => key1 - key2
const { search, insert, update, remove } = orderedArray(getKey, compareKey)
const array: Item[] = [
{ key: 10, value: 0 },
{ key: 11, value: 1 },
{ key: 12, value: 2 },
{ key: 13, value: 3 },
{ key: 14, value: 4 },
]
let result = search(array, 12)
// {found: 2}
result = search(array, 12.5)
// {closest: 3}
insert(array, { key: 12.5, value: 2.5 })
remove(array, 13)
// Double the value if it exists, otherwise insert with value: 0
update(array, 10, (item) => {
if (item) return { ...item, value: item.value * 2 }
else {key: 10, value: 0}
})
// Double the value if it exists, otherwise don't do anything
update(array, 10, (item) => {
if (item) return { ...item, value: item.value * 2 }
})
// Insert item only if it does not exist.
update(array, 10.5, (item) => {
if (item) return
else {key: 10.5, value: 0}
})