Package Exports
- extra-iterable
Readme
An iterable is a sequence of values.
📦 NPM,
😺 GitHub,
🏃 RunKit,
📼 Asciinema,
🌔 Minified,
📜 Files,
📰 JSDoc,
📘 Wiki.
Assumption here is that an iterable can only be iterated over once. Methods which require multiple iterations preserve old values in a backup array using many. Many methods accept both compare and map functions, and in some cases using only a map function enables faster comparision (like unique). I borrowed a lot of ideas from Haskell, Elm, Python, Basic, Lodash, and other NPM packages. These are mentioned in references of each method.
Methods as separate packages:
- @extra-iterable/swap: use rollup to bundle this es module.
- @extra-iterable/swap.min: use in browser (browserify, uglify-js).
Stability: Experimental.
const iterable = require("extra-iterable");
// import * as iterable from "extra-iterable";
// import * as iterable from "https://unpkg.com/extra-iterable@2.5.10/index.mjs"; (deno)
var x = [2, 4, 6, 8];
iterable.get(x, 1);
// 4
var x = [1, 2, 3, 4];
[...iterable.swap(x, 0, 1)];
// [ 2, 1, 3, 4 ]
var x = [1, 2, 3];
[...iterable.cycle(x, 0, 4)];
// [1, 2, 3, 1]
var x = [1, 2, 3, 4];
iterable.reduce(x, (acc, v) => acc+v);
// 10Index
| Method | Action | 
|---|---|
| is | Checks if value is iterable. | 
| get | Gets value at index. | 
| set | Sets value at index. | 
| swap | Exchanges two values. | 
| index | Gets zero-based index. | 
| indexRange | Gets index range of part of iterable. | 
| isEmpty | Checks is iterable is empty. | 
| size | Counts the number of values. | 
| entries | Lists all index-value pairs. | 
| iterator | Gives iterator for iterable. | 
| many | Converts a once iterable to many. | 
| from | Converts iterator to iterable. | 
| take | Keeps first n values only. | 
| drop | Discards first n values only. | 
| head | Gets first value. | 
| left | Gets values from left. | 
| concat | Appends values from iterables. | 
| push | Adds values to the end. | 
| copy | Copies part of iterable to another. | 
| fill | Fills with given value. | 
| slice | Gets part of an iterable. | 
| splice | Removes or replaces existing values. | 
| chunk | Breaks iterable into chunks of given size. | 
| cycle | Gives values that cycle through an iterable. | 
| repeat | Repeats an iterable given times. | 
| reverse | Reverses the values. | 
| rotate | Rotates values in iterable. | 
| interleave | Merges values from iterables. | 
| merge | Merges values from sorted iterables. | 
| flat | Flattens nested iterable to given depth. | 
| min | Finds smallest entry. | 
| max | Finds largest entry. | 
| range | Finds smallest and largest entries. | 
| count | Counts values which satisfy a test. | 
| partition | Segregates values by test result. | 
| cut | Breaks iterable when test passes. | 
| split | Breaks iterable considering test as separator. | 
| group | Keeps similar values together and in order. | 
| join | Joins values together. | 
| map | Updates values based on map function. | 
| filter | Keeps the values which pass a test. | 
| reduce | Reduces values to a single value. | 
| accumulate | Produces accumulating values. | 
| cartesianProduct | Lists cartesian product of iterables. | 
| zip | Combines values from iterables. | 
| unique | Removes duplicate values. | 
| union | Gives values present in any iterable. | 
| intersection | Gives values present in both iterables. | 
| difference | Gives values not present in another iterable. | 
| symmetricDifference | Gives values not present in both iterables. | 
| isUnique | Checks if there are no duplicate values. | 
| isDisjoint | Checks if iterables have no value in common. | 
| hasValue | Checks if iterable has a value. | 
| hasPrefix | Checks if iterable starts with a prefix. | 
| hasSuffix | Checks if iterable ends with a suffix. | 
| hasInfix | Checks if iterable contains an infix. | 
| hasSubsequence | Checks if iterable has a subsequence. | 
| isEqual | Checks if two iterables are equal. | 
| compare | Compares two iterables. | 
| search | Finds index of first value passing a test. | 
| scanWhile | Scans from left, while a test passes. | 
| find | Finds first value passing a test. | 
| forEach | Calls a function for each value. | 
| some | Checks if any value satisfies a test. | 
| every | Checks if all values satisfy a test. | 
