Skip to content

Latest commit

 

History

History

arrays

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

@thi.ng/arrays

npm version npm downloads Mastodon Follow

Note

This is one of 199 standalone projects, maintained as part of the @thi.ng/umbrella monorepo and anti-framework.

🚀 Please help me to work full-time on these projects by sponsoring me on GitHub. Thank you! ❤️

About

Array / Arraylike utilities.

Status

STABLE - used in production

Search or submit any issues for this package

Installation

yarn add @thi.ng/arrays

ESM import:

import * as arr from "@thi.ng/arrays";

Browser ESM import:

<script type="module" src="https://esm.run/@thi.ng/arrays"></script>

JSDelivr documentation

For Node.js REPL:

const arr = await import("@thi.ng/arrays");

Package sizes (brotli'd, pre-treeshake): ESM: 3.00 KB

Dependencies

Note: @thi.ng/api is in most cases a type-only import (not used at runtime)

Usage examples

Six projects in this repo's /examples directory are using this package:

Screenshot Description Live demo Source
k-means clustering visualization Demo Source
Randomized 4-point 2D color gradient image generator Demo Source
Animated, iterative polygon subdivisions & visualization Demo Source
Responsive image gallery with tag-based Jaccard similarity ranking Demo Source
Responsive & reactively computed stacked column layout Demo Source
Tree-based UI to find & explore thi.ng projects via their associated keywords Demo Source

API

Generated API docs

Binary search result predicates

The following predicates can be used to perform predecessor / successor queries using binarySearch().

  • bsLT() - Returns index of last item less than search value or -1 if no such values exist
  • bsLE() - Similar to bsLT(), but for less-than-equals queries
  • bsGT() - Returns index of first item greater than search value or -1 if no such values exist
  • bsGE() - Similar to bsGT(), but for less-than-equals queries
  • bsEQ() - Merely syntax sugar, casting any non-found result indices to -1
import { binarySearch, bsGT, bsLT } from "@thi.ng/arrays";

const src = [10, 20, 30, 40];

bsLT(binarySearch(src, 25))
// 1

// greater-than queries also require the array length

bsGT(binarySearch(src, 25), src.length)
// 2

bsGT(binarySearch(src, 40), src.length)
// -1

Authors

If this project contributes to an academic publication, please cite it as:

@misc{thing-arrays,
  title = "@thi.ng/arrays",
  author = "Karsten Schmidt",
  note = "https://thi.ng/arrays",
  year = 2018
}

License

© 2018 - 2024 Karsten Schmidt // Apache License 2.0