Package Exports
- @thi.ng/arrays
- @thi.ng/arrays/api
- @thi.ng/arrays/arg-sort
- @thi.ng/arrays/argmin
- @thi.ng/arrays/binary-search
- @thi.ng/arrays/bisect
- @thi.ng/arrays/blit
- @thi.ng/arrays/ends-with
- @thi.ng/arrays/ensure-array
- @thi.ng/arrays/ensure-iterable
- @thi.ng/arrays/fill-range
- @thi.ng/arrays/filter-all
- @thi.ng/arrays/find
- @thi.ng/arrays/find-sequence
- @thi.ng/arrays/floyd-rivest
- @thi.ng/arrays/fuzzy-match
- @thi.ng/arrays/insert
- @thi.ng/arrays/into
- @thi.ng/arrays/is-sorted
- @thi.ng/arrays/iterator
- @thi.ng/arrays/levenshtein
- @thi.ng/arrays/lookup
- @thi.ng/arrays/peek
- @thi.ng/arrays/permutation
- @thi.ng/arrays/quicksort
- @thi.ng/arrays/rotate
- @thi.ng/arrays/shuffle
- @thi.ng/arrays/sort-cached
- @thi.ng/arrays/starts-with
- @thi.ng/arrays/swap
- @thi.ng/arrays/swizzle
- @thi.ng/arrays/threshold
- @thi.ng/arrays/topo-sort
Readme
[!NOTE] This is one of 210 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/arraysESM import:
import * as arr from "@thi.ng/arrays";Browser ESM import:
<script type="module" src="https://esm.run/@thi.ng/arrays"></script>For Node.js REPL:
const arr = await import("@thi.ng/arrays");Package sizes (brotli'd, pre-treeshake): ESM: 3.17 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
arrayIterator()argMin()/argMax()argSort()binarySearch()bisect()blit1d()/ blit2d()endsWith()ensureArray()ensureIterable()fillRange()find()findSequence()floydRivest()fuzzyMatch()insert()into()isSorted()levenshtein()multiSwap()peek()permutation()quickSort()rotate()/rotateTyped()selectThresholdMin()/selectThresholdMax()shuffle()(w/ custom PRNG support)shuffleRange()(w/ custom PRNG support)sortByCachedKey()startsWith()swap()swizzle()topoSort()
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 existbsLE()- Similar tobsLT(), but for less-than-equals queriesbsGT()- Returns index of first item greater than search value or -1 if no such values existbsGE()- Similar tobsGT(), but for less-than-equals queriesbsEQ()- 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)
// -1Authors
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 - 2025 Karsten Schmidt // Apache License 2.0




