extra-iterable
v3.4.2
Published
An [iterable] is a sequence of values.<br>
Readme
An iterable is a sequence of values.
This is a collection of functions for operating upon iterables. 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 toMany. 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.
import * as xiterable from "jsr:@nodef/extra-iterable";
var x = [2, 4, 6, 8];
xiterable.get(x, 1);
// → 4
var x = [1, 2, 3, 4];
[...xiterable.swap(x, 0, 1)];
// → [ 2, 1, 3, 4 ]
var x = [1, 2, 3];
[...xiterable.cycle(x, 0, 4)];
// → [1, 2, 3, 1]
var x = [1, 2, 3, 4];
xiterable.reduce(x, (acc, v) => acc+v);
// → 10Index
| Property | Description | | ---- | ---- | | is | Check if value is an iterable. | | isIterator | Check if value is an iterator. | | isList | Check if value is a list (iterable & !string). | | iterator | Get iterator of an iterable. | | keys | List all indices. | | values | List all values. | | entries | List all index-value pairs. | | | | | from | Convert an iterable-like to iterable. | | fromIterator | Convert an iterator to iterable. | | fromRange | Generate iterable from given number range. | | fromInvocation | Generate iterable from repeated function invocation. | | fromApplication | Generate iterable from repeated function application. | | | | | isOnce | Check if an iterable can iterated only once. | | isMany | Check if an iterable can be iterated many times. | | toMany | Convert a once-like iterable to many. | | toInvokable | Generate a function that iterates over values upon invocation. | | | | | isEmpty | Check if an iterable is empty. | | length | Find the length of an iterable. | | | | | compare | Compare two iterables. | | isEqual | Check if two iterables are equal. | | | | | index | Get zero-based index for element in iterable. | | indexRange | Get index range for part of iterable. | | get | Get value at index. | | getAll | Get values at indices. | | getPath | Get value at path in a nested iterable. | | hasPath | Check if nested iterable has a path. | | set | Set value at index. | | swap | Exchange two values. | | remove | Remove value at index. | | | | | count | Count values which satisfy a test. | | countAs | Count occurrences of values. | | min | Find smallest value. | | max | Find largest value. | | range | Find smallest and largest values. | | minEntry | Find smallest entry. | | maxEntry | Find largest entry. | | rangeEntries | Find smallest and largest entries. | | | | | slice | Get part of an iterable. | | head | Get first value. | | last | Get last value. | | tail | Get values except first. | | init | Get values except last. | | left | Get values from left. | | right | Get values from right. | | middle | Get values from middle. | | take | Keep first n values only. | | takeRight | Keep last n values only. | | takeWhile | Keep values from left, while a test passes. | | takeWhileRight | Keep values from right, while a test passes. | | drop | Discard first n values only. | | dropRight | Discard last n values only. | | dropWhile | Discard values from left, while a test passes. | | dropWhileRight | Discard values from right, while a test passes. | | | | | includes | Check if iterable has a value. | | indexOf | Find first index of a value. | | lastIndexOf | Find last index of a value. | | find | Find first value passing a test. | | findRight | Find last value passing a test. | | scanWhile | Scan from left, while a test passes. | | scanWhileRight | Scan from right, while a test passes. | | scanUntil | Scan from left, until a test passes. | | scanUntilRight | Scan from right, until a test passes. | | search | Find index of first value passing a test. | | searchRight | Find index of last value passing a test. | | searchAll | Find indices of values passing a test. | | searchValue | Find first index of a value. | | searchValueRight | Find last index of a value. | | searchValueAll | Find indices of a value. | | searchInfix | Find first index of an infix. | | searchInfixRight | Find last index of an infix. | | searchInfixAll | Find indices of an infix. | | searchSubsequence | Find first index of a subsequence. | | hasValue | Check if iterable has a value. | | hasPrefix | Check if iterable starts with a prefix. | | hasSuffix | Check if iterable ends with a suffix. | | hasInfix | Check if iterable contains an infix. | | hasSubsequence | Check if iterable has a subsequence. | | | | | forEach | Call a function for each value. | | some | Check if any value satisfies a test. | | every | Check if all values satisfy a test. | | map | Transform values of an iterable. | | reduce | Reduce values of iterable to a single value. | | filter | Keep the values which pass a test. | | filterAt | Keep the values at given indices. | | reject | Discard the values which pass a test. | | rejectAt | Discard the values at given indices. | | accumulate | Produce accumulating values. | | flat | Flatten nested iterable to given depth. | | flatMap | Flatten nested iterable, based on map function. | | zip | Combine values from iterables. | | | | | fill | Fill with given value. | | push | Add values to the end. | | unshift | Add values to the start. | | copy | Copy part of iterable to another. | | copyWithin | Copy part of iterable within. | | moveWithin | Move part of iterable within. | | splice | Remove or replaces existing values. | | split | Break iterable considering test as separator. | | splitAt | Break iterable considering indices as separator. | | cut | Break iterable when test passes. | | cutRight | Break iterable after test passes. | | cutAt | Break iterable at given indices. | | cutAtRight | Break iterable after given indices. | | group | Keep similar values together and in order. | | partition | Segregate values by test result. | | partitionAs | Segregate values by similarity. | | chunk | Break iterable into chunks of given size. | | cycle | Obtain values that cycle through an iterable. | | repeat | Repeat an iterable given times. | | reverse | Reverse the values. | | rotate | Rotate values in iterable. | | intersperse | Place a separator between every value. | | interpolate | Estimate new values between existing ones. | | intermix | Place values of an iterable between another. | | interleave | Place values from iterables alternately. | | | | | concat | Append values from iterables. | | merge | Merge values from sorted iterables. | | join | Join values together into a string. | | | | | isUnique | Check if there are no duplicate values. | | isDisjoint | Checks if arrays have no value in common. | | unique | Remove duplicate values. | | union | Obtain values present in any iterable. | | intersection | Obtain values present in both iterables. | | difference | Obtain values not present in another iterable. | | symmetricDifference | Obtain values not present in both iterables. | | cartesianProduct | List cartesian product of iterables. |

