UNPKG

@luvies/lazy

Version:

A linq-like lazy iteration module that aims to support deno, node & browser

809 lines 217 kB
<!doctype html> <html class="default no-js"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Lazy | @luvies/lazy</title> <meta name="description" content="Documentation for @luvies/lazy"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="../assets/css/main.css"> <script async src="../assets/js/search.js" id="search-script"></script> </head> <body> <header> <div class="tsd-page-toolbar"> <div class="container"> <div class="table-wrap"> <div class="table-cell" id="tsd-search" data-index="../assets/js/search.json" data-base=".."> <div class="field"> <label for="tsd-search-field" class="tsd-widget search no-caption">Search</label> <input id="tsd-search-field" type="text" /> </div> <ul class="results"> <li class="state loading">Preparing search index...</li> <li class="state failure">The search index is not available</li> </ul> <a href="../index.html" class="title">@luvies/lazy</a> </div> <div class="table-cell" id="tsd-widgets"> <div id="tsd-filter"> <a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a> <div class="tsd-filter-group"> <div class="tsd-select" id="tsd-filter-visibility"> <span class="tsd-select-label">All</span> <ul class="tsd-select-list"> <li data-value="public">Public</li> <li data-value="protected">Public/Protected</li> <li data-value="private" class="selected">All</li> </ul> </div> <input type="checkbox" id="tsd-filter-inherited" checked /> <label class="tsd-widget" for="tsd-filter-inherited">Inherited</label> <input type="checkbox" id="tsd-filter-externals" checked /> <label class="tsd-widget" for="tsd-filter-externals">Externals</label> </div> </div> <a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a> </div> </div> </div> </div> <div class="tsd-page-title"> <div class="container"> <ul class="tsd-breadcrumb"> <li> <a href="../modules.html">@luvies/lazy</a> </li> <li> <a href="lazy.html">Lazy</a> </li> </ul> <h1>Class Lazy&lt;TElement&gt;</h1> </div> </div> </header> <div class="container container-main"> <div class="row"> <div class="col-8 col-content"> <section class="tsd-panel tsd-comment"> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>The base class that all lazy iterable objects derive from. This can be extended with custom iterators if needed.</p> </div> </div> </section> <section class="tsd-panel tsd-type-parameters"> <h3>Type parameters</h3> <ul class="tsd-type-parameters"> <li> <h4>TElement</h4> </li> </ul> </section> <section class="tsd-panel tsd-hierarchy"> <h3>Hierarchy</h3> <ul class="tsd-hierarchy"> <li> <span class="target">Lazy</span> </li> </ul> </section> <section class="tsd-panel"> <h3>Implements</h3> <ul class="tsd-hierarchy"> <li><span class="tsd-signature-type">Iterable</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span></li> </ul> </section> <section class="tsd-panel-group tsd-index-group"> <h2>Index</h2> <section class="tsd-panel tsd-index-panel"> <div class="tsd-index-content"> <section class="tsd-index-section "> <h3>Constructors</h3> <ul class="tsd-index-list"> <li class="tsd-kind-constructor tsd-parent-kind-class tsd-has-type-parameter"><a href="lazy.html#constructor" class="tsd-kind-icon">constructor</a></li> </ul> </section> <section class="tsd-index-section "> <h3>Methods</h3> <ul class="tsd-index-list"> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#_symbol_iterator_" class="tsd-kind-icon">[<wbr>Symbol.iterator]</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"><a href="lazy.html#aggregate" class="tsd-kind-icon">aggregate</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#all" class="tsd-kind-icon">all</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#any" class="tsd-kind-icon">any</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#append" class="tsd-kind-icon">append</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"><a href="lazy.html#apply" class="tsd-kind-icon">apply</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#average" class="tsd-kind-icon">average</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#batchin" class="tsd-kind-icon">batch<wbr>In</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#cache" class="tsd-kind-icon">cache</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#concat" class="tsd-kind-icon">concat</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#contains" class="tsd-kind-icon">contains</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#count" class="tsd-kind-icon">count</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#defaultifempty" class="tsd-kind-icon">default<wbr>IfEmpty</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"><a href="lazy.html#distinct" class="tsd-kind-icon">distinct</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#elementat" class="tsd-kind-icon">element<wbr>At</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"><a href="lazy.html#elementatordefault" class="tsd-kind-icon">element<wbr>AtOr<wbr>Default</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"><a href="lazy.html#except" class="tsd-kind-icon">except</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#first" class="tsd-kind-icon">first</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"><a href="lazy.html#firstordefault" class="tsd-kind-icon">first<wbr>OrDefault</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#foreach" class="tsd-kind-icon">for<wbr>Each</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"><a href="lazy.html#groupby" class="tsd-kind-icon">group<wbr>By</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"><a href="lazy.html#groupjoin" class="tsd-kind-icon">group<wbr>Join</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"><a href="lazy.html#intersect" class="tsd-kind-icon">intersect</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#iterableequals" class="tsd-kind-icon">iterable<wbr>Equals</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"><a href="lazy.html#join" class="tsd-kind-icon">join</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#last" class="tsd-kind-icon">last</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"><a href="lazy.html#lastordefault" class="tsd-kind-icon">last<wbr>OrDefault</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#max" class="tsd-kind-icon">max</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#min" class="tsd-kind-icon">min</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"><a href="lazy.html#orderby" class="tsd-kind-icon">order<wbr>By</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"><a href="lazy.html#orderbydecending" class="tsd-kind-icon">order<wbr>ByDecending</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#ordernumericallyby" class="tsd-kind-icon">order<wbr>Numerically<wbr>By</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#ordernumericallybydecending" class="tsd-kind-icon">order<wbr>Numerically<wbr>ByDecending</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#prepend" class="tsd-kind-icon">prepend</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#resolveall" class="tsd-kind-icon">resolve<wbr>All</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#reverse" class="tsd-kind-icon">reverse</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"><a href="lazy.html#select" class="tsd-kind-icon">select</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"><a href="lazy.html#selectmany" class="tsd-kind-icon">select<wbr>Many</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#single" class="tsd-kind-icon">single</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"><a href="lazy.html#singleordefault" class="tsd-kind-icon">single<wbr>OrDefault</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#skip" class="tsd-kind-icon">skip</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#skiplast" class="tsd-kind-icon">skip<wbr>Last</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#skipwhile" class="tsd-kind-icon">skip<wbr>While</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#stringjoin" class="tsd-kind-icon">string<wbr>Join</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#sum" class="tsd-kind-icon">sum</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#take" class="tsd-kind-icon">take</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#takelast" class="tsd-kind-icon">take<wbr>Last</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#takewhile" class="tsd-kind-icon">take<wbr>While</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#toarray" class="tsd-kind-icon">to<wbr>Array</a></li> <li class="tsd-kind-method tsd-parent-kind-class"><a href="lazy.html#tojson" class="tsd-kind-icon">toJSON</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"><a href="lazy.html#tomap" class="tsd-kind-icon">to<wbr>Map</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"><a href="lazy.html#union" class="tsd-kind-icon">union</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"><a href="lazy.html#where" class="tsd-kind-icon">where</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"><a href="lazy.html#zip" class="tsd-kind-icon">zip</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static"><a href="lazy.html#empty" class="tsd-kind-icon">empty</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static"><a href="lazy.html#from" class="tsd-kind-icon">from</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-is-static"><a href="lazy.html#range" class="tsd-kind-icon">range</a></li> <li class="tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-static"><a href="lazy.html#repeat" class="tsd-kind-icon">repeat</a></li> </ul> </section> </div> </section> </section> <section class="tsd-panel-group tsd-member-group "> <h2>Constructors</h2> <section class="tsd-panel tsd-member tsd-kind-constructor tsd-parent-kind-class tsd-has-type-parameter"> <a name="constructor" class="tsd-anchor"></a> <h3>constructor</h3> <ul class="tsd-signatures tsd-kind-constructor tsd-parent-kind-class tsd-has-type-parameter"> <li class="tsd-signature tsd-kind-icon">new <wbr>Lazy&lt;TElement&gt;<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="lazy.html" class="tsd-signature-type" data-tsd-kind="Class">Lazy</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> <aside class="tsd-sources"> </aside> <h4 class="tsd-type-parameters-title">Type parameters</h4> <ul class="tsd-type-parameters"> <li> <h4>TElement</h4> </li> </ul> <h4 class="tsd-returns-title">Returns <a href="lazy.html" class="tsd-signature-type" data-tsd-kind="Class">Lazy</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span></h4> </li> </ul> </section> </section> <section class="tsd-panel-group tsd-member-group "> <h2>Methods</h2> <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"> <a name="_symbol_iterator_" class="tsd-anchor"></a> <h3><span class="tsd-flag ts-flagAbstract">Abstract</span> [<wbr>Symbol.iterator]</h3> <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"> <li class="tsd-signature tsd-kind-icon">[<wbr>Symbol.iterator]<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Iterator</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol">&gt;</span></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in lazy.ts:1029</li> </ul> </aside> <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Iterator</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol">&gt;</span></h4> </li> </ul> </section> <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"> <a name="aggregate" class="tsd-anchor"></a> <h3>aggregate</h3> <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"> <li class="tsd-signature tsd-kind-icon">aggregate<span class="tsd-signature-symbol">(</span>agg<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">AggFn</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">TElement</span></li> <li class="tsd-signature tsd-kind-icon">aggregate&lt;TAcc&gt;<span class="tsd-signature-symbol">(</span>agg<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">AggFn</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">TAcc</span><span class="tsd-signature-symbol">&gt;</span>, seed<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">TAcc</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">TAcc</span></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in lazy.ts:99</li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Applies an accumulator function over an interable.</p> </div> <dl class="tsd-comment-tags"> <dt>throws</dt> <dd><p>{Error} If the iterable was empty.</p> </dd> <dt>remarks</dt> <dd><p>The function works very similarly to <code>Array.prototype.reduce</code>, with the added benefit of working on any general iterable object. This will cause a complete iteration of the iterable object.</p> </dd> </dl> </div> <h4 class="tsd-parameters-title">Parameters</h4> <ul class="tsd-parameters"> <li> <h5>agg: <span class="tsd-signature-type">AggFn</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span></h5> <div class="tsd-comment tsd-typography"> <p>The accumulator function to apply over the iterable.</p> </div> </li> </ul> <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">TElement</span></h4> <p>The final accumulator value.</p> </li> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in lazy.ts:110</li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Applies an accumulator function over an interable.</p> </div> <dl class="tsd-comment-tags"> <dt>remarks</dt> <dd><p>The function works very similarly to <code>Array.prototype.reduce</code>, with the added benefit of working on any general iterable object. This will cause a complete iteration of the iterable object.</p> </dd> </dl> </div> <h4 class="tsd-type-parameters-title">Type parameters</h4> <ul class="tsd-type-parameters"> <li> <h4>TAcc</h4> </li> </ul> <h4 class="tsd-parameters-title">Parameters</h4> <ul class="tsd-parameters"> <li> <h5>agg: <span class="tsd-signature-type">AggFn</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">TAcc</span><span class="tsd-signature-symbol">&gt;</span></h5> <div class="tsd-comment tsd-typography"> <p>The accumulator function to apply over the iterable.</p> </div> </li> <li> <h5>seed: <span class="tsd-signature-type">TAcc</span></h5> <div class="tsd-comment tsd-typography"> <p>The seed to set the initial <code>acc</code> param to in the accumulator function. If not given, then the first element is used.</p> </div> </li> </ul> <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">TAcc</span></h4> <p>The final accumulator value.</p> </li> </ul> </section> <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"> <a name="all" class="tsd-anchor"></a> <h3>all</h3> <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"> <li class="tsd-signature tsd-kind-icon">all<span class="tsd-signature-symbol">(</span>predicate<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">BoolPredicate</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in lazy.ts:126</li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Returns whether all elements satisfy the given condition.</p> </div> <dl class="tsd-comment-tags"> <dt>remarks</dt> <dd><p>This will iterate until the condition is false or until the iterable ends.</p> </dd> </dl> </div> <h4 class="tsd-parameters-title">Parameters</h4> <ul class="tsd-parameters"> <li> <h5>predicate: <span class="tsd-signature-type">BoolPredicate</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span></h5> <div class="tsd-comment tsd-typography"> <p>The function to use to test each element.</p> </div> </li> </ul> <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4> <p>Whether all elements satisfied the condition.</p> </li> </ul> </section> <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"> <a name="any" class="tsd-anchor"></a> <h3>any</h3> <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"> <li class="tsd-signature tsd-kind-icon">any<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></li> <li class="tsd-signature tsd-kind-icon">any<span class="tsd-signature-symbol">(</span>predicate<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">BoolPredicate</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in lazy.ts:138</li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Returns whether the iterable is not empty.</p> </div> <dl class="tsd-comment-tags"> <dt>remarks</dt> <dd><p>For checking whether the given lazy query has any elements, prefer to use this function over <a href="lazy.html#count">Lazy.count</a>, as that function will iterate the entire object, whereas this will stop at the first. This will iterate only a single time.</p> </dd> </dl> </div> <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4> <p>Whether the iterable is not empty.</p> </li> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in lazy.ts:149</li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Returns whether any of the elements satisfy the given condition.</p> </div> <dl class="tsd-comment-tags"> <dt>remarks</dt> <dd><p>For checking whether the given lazy query has any elements, prefer to use this function over <a href="lazy.html#count">Lazy.count</a>, as that function will iterate the entire object, whereas this will stop at the first element that satisfies the condition. This will iterate until the condition is true or until the iterable ends.</p> </dd> </dl> </div> <h4 class="tsd-parameters-title">Parameters</h4> <ul class="tsd-parameters"> <li> <h5>predicate: <span class="tsd-signature-type">BoolPredicate</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span></h5> <div class="tsd-comment tsd-typography"> <p>The function to use to test each element.</p> </div> </li> </ul> <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4> <p>Whether any element in the iterable satisfied the condition. If the iterable was empty, then <code>false</code> is returned</p> </li> </ul> </section> <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"> <a name="append" class="tsd-anchor"></a> <h3>append</h3> <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"> <li class="tsd-signature tsd-kind-icon">append<span class="tsd-signature-symbol">(</span>element<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="lazy.html" class="tsd-signature-type" data-tsd-kind="Class">Lazy</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in lazy.ts:596</li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Appends the element to the end of the iterable.</p> </div> <dl class="tsd-comment-tags"> <dt>remarks</dt> <dd><p>Does not cause additional unexpected iteration.</p> </dd> </dl> </div> <h4 class="tsd-parameters-title">Parameters</h4> <ul class="tsd-parameters"> <li> <h5>element: <span class="tsd-signature-type">TElement</span></h5> <div class="tsd-comment tsd-typography"> <p>The element to append.</p> </div> </li> </ul> <h4 class="tsd-returns-title">Returns <a href="lazy.html" class="tsd-signature-type" data-tsd-kind="Class">Lazy</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span></h4> </li> </ul> </section> <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"> <a name="apply" class="tsd-anchor"></a> <h3>apply</h3> <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter"> <li class="tsd-signature tsd-kind-icon">apply&lt;TLazy, TResult&gt;<span class="tsd-signature-symbol">(</span>fn<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">(</span>t<span class="tsd-signature-symbol">: </span><a href="lazy.html" class="tsd-signature-type" data-tsd-kind="Class">Lazy</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">TLazy</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="lazy.html" class="tsd-signature-type" data-tsd-kind="Class">Lazy</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TResult</span><span class="tsd-signature-symbol">&gt;</span></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in lazy.ts:608</li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Applies the given lazy iterable implementation to the current object. This allows for using custom Lazy implementations using the standard chaining syntax.</p> </div> </div> <h4 class="tsd-type-parameters-title">Type parameters</h4> <ul class="tsd-type-parameters"> <li> <h4>TLazy<span class="tsd-signature-symbol">: </span><a href="lazy.html" class="tsd-signature-type" data-tsd-kind="Class">Lazy</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TResult</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">TLazy</span><span class="tsd-signature-symbol">&gt;</span></h4> </li> <li> <h4>TResult = <span class="tsd-signature-type">TElement</span></h4> </li> </ul> <h4 class="tsd-parameters-title">Parameters</h4> <ul class="tsd-parameters"> <li> <h5>fn: <span class="tsd-signature-symbol">(</span>t<span class="tsd-signature-symbol">: </span><a href="lazy.html" class="tsd-signature-type" data-tsd-kind="Class">Lazy</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">TLazy</span></h5> <div class="tsd-comment tsd-typography"> <p>The function that will create the iterable instance using the current object.</p> </div> <ul class="tsd-parameters"> <li class="tsd-parameter-signature"> <ul class="tsd-signatures tsd-kind-type-literal"> <li class="tsd-signature tsd-kind-icon"><span class="tsd-signature-symbol">(</span>t<span class="tsd-signature-symbol">: </span><a href="lazy.html" class="tsd-signature-type" data-tsd-kind="Class">Lazy</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">TLazy</span></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> <h4 class="tsd-parameters-title">Parameters</h4> <ul class="tsd-parameters"> <li> <h5>t: <a href="lazy.html" class="tsd-signature-type" data-tsd-kind="Class">Lazy</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span></h5> </li> </ul> <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">TLazy</span></h4> </li> </ul> </li> </ul> </li> </ul> <h4 class="tsd-returns-title">Returns <a href="lazy.html" class="tsd-signature-type" data-tsd-kind="Class">Lazy</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TResult</span><span class="tsd-signature-symbol">&gt;</span></h4> <p>The instantiated iterable object.</p> </li> </ul> </section> <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"> <a name="average" class="tsd-anchor"></a> <h3>average</h3> <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"> <li class="tsd-signature tsd-kind-icon">average<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol"> extends </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> ? </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> : </span><span class="tsd-signature-type">never</span></li> <li class="tsd-signature tsd-kind-icon">average<span class="tsd-signature-symbol">(</span>selector<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">MapFn</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in lazy.ts:161</li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Computes the average of the iterable.</p> </div> <dl class="tsd-comment-tags"> <dt>throws</dt> <dd><p>{TypeError} If any element in the iterable was a non-number.</p> </dd> <dt>throws</dt> <dd><p>{Error} If the iterable was empty.</p> </dd> <dt>remarks</dt> <dd><p>This will cause a complete iteration of the iterable object.</p> </dd> </dl> </div> <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol"> extends </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> ? </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> : </span><span class="tsd-signature-type">never</span></h4> <p>The numeric average of the iterable.</p> </li> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in lazy.ts:169</li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Computes the average of result of the selector function over the iterable.</p> </div> <dl class="tsd-comment-tags"> <dt>throws</dt> <dd><p>{Error} If the iterable was empty.</p> </dd> <dt>remarks</dt> <dd><p>This will cause a complete iteration of the iterable object.</p> </dd> </dl> </div> <h4 class="tsd-parameters-title">Parameters</h4> <ul class="tsd-parameters"> <li> <h5>selector: <span class="tsd-signature-type">MapFn</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">&gt;</span></h5> <div class="tsd-comment tsd-typography"> <p>The transformation function to use for each element.</p> </div> </li> </ul> <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">number</span></h4> <p>The numeric average of the results of the selector function.</p> </li> </ul> </section> <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"> <a name="batchin" class="tsd-anchor"></a> <h3>batch<wbr>In</h3> <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"> <li class="tsd-signature tsd-kind-icon">batch<wbr>In<span class="tsd-signature-symbol">(</span>batchSize<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, includeIncomplete<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="lazy.html" class="tsd-signature-type" data-tsd-kind="Class">Lazy</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">Iterable</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">&gt;</span></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in lazy.ts:623</li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Batches elements in groups of the given batch size.</p> </div> <dl class="tsd-comment-tags"> <dt>remarks</dt> <dd><p>Does not cause additional unexpected iteration.</p> </dd> </dl> </div> <h4 class="tsd-parameters-title">Parameters</h4> <ul class="tsd-parameters"> <li> <h5>batchSize: <span class="tsd-signature-type">number</span></h5> <div class="tsd-comment tsd-typography"> <p>The size of each batch.</p> </div> </li> <li> <h5>includeIncomplete: <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol"> = true</span></h5> <div class="tsd-comment tsd-typography"> <p>Whether to include batches that are smaller than the target size. This only applies to the final batch of the iterable if the total size is not a multiple of the batch size.</p> </div> </li> </ul> <h4 class="tsd-returns-title">Returns <a href="lazy.html" class="tsd-signature-type" data-tsd-kind="Class">Lazy</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">Iterable</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">&gt;</span></h4> </li> </ul> </section> <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"> <a name="cache" class="tsd-anchor"></a> <h3>cache</h3> <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"> <li class="tsd-signature tsd-kind-icon">cache<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="lazy.html" class="tsd-signature-type" data-tsd-kind="Class">Lazy</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in lazy.ts:645</li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Resolves the underlaying iterable completely and returns a lazy of the result.</p> </div> <dl class="tsd-comment-tags"> <dt>remarks</dt> <dd><p>This will completely iterate the underlaying iterable, and return a completely new lazy object of the result. This allows for some optimisation when a chain has become complex and iteration of it is needed multiple times (as the resulting iterable will only be calulated once, and then reused). This can also be used to ensure that side-effects of the chain are only done once, which can be useful in more complicated computations. Since this will return a completely new Lazy iterable, it means that, if no other references exist, then the previous chain (and even the original iterable) can be freed for garbage collection, potentially helping with memory.</p> </dd> </dl> </div> <h4 class="tsd-returns-title">Returns <a href="lazy.html" class="tsd-signature-type" data-tsd-kind="Class">Lazy</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span></h4> </li> </ul> </section> <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"> <a name="concat" class="tsd-anchor"></a> <h3>concat</h3> <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"> <li class="tsd-signature tsd-kind-icon">concat<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span>iterables<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Iterable</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="lazy.html" class="tsd-signature-type" data-tsd-kind="Class">Lazy</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in lazy.ts:654</li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Concatinates multiple iterables in order.</p> </div> <dl class="tsd-comment-tags"> <dt>remarks</dt> <dd><p>Does not cause additional unexpected iteration.</p> </dd> </dl> </div> <h4 class="tsd-parameters-title">Parameters</h4> <ul class="tsd-parameters"> <li> <h5><span class="tsd-flag ts-flagRest">Rest</span> <span class="tsd-signature-symbol">...</span>iterables: <span class="tsd-signature-type">Iterable</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">[]</span></h5> <div class="tsd-comment tsd-typography"> <p>The other iterables to concatinate with.</p> </div> </li> </ul> <h4 class="tsd-returns-title">Returns <a href="lazy.html" class="tsd-signature-type" data-tsd-kind="Class">Lazy</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span></h4> </li> </ul> </section> <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"> <a name="contains" class="tsd-anchor"></a> <h3>contains</h3> <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"> <li class="tsd-signature tsd-kind-icon">contains<span class="tsd-signature-symbol">(</span>element<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">TElement</span>, comparer<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">ComparerFn</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">boolean</span></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in lazy.ts:184</li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Determines whether the iterable has a given element.</p> </div> <dl class="tsd-comment-tags"> <dt>remarks</dt> <dd><p>This will iterable until the given value is found, or until the iterable ends.</p> </dd> </dl> </div> <h4 class="tsd-parameters-title">Parameters</h4> <ul class="tsd-parameters"> <li> <h5>element: <span class="tsd-signature-type">TElement</span></h5> <div class="tsd-comment tsd-typography"> <p>The value to search for.</p> </div> </li> <li> <h5><span class="tsd-flag ts-flagOptional">Optional</span> comparer: <span class="tsd-signature-type">ComparerFn</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span></h5> <div class="tsd-comment tsd-typography"> <p>The function that compares 2 elements and returns a boolean on whether they are equal or not. If not given, defaults to strict equals (<code>===</code>).</p> </div> </li> </ul> <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">boolean</span></h4> <p>Whether the element was in the iterable.</p> </li> </ul> </section> <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"> <a name="count" class="tsd-anchor"></a> <h3>count</h3> <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"> <li class="tsd-signature tsd-kind-icon">count<span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span></li> <li class="tsd-signature tsd-kind-icon">count<span class="tsd-signature-symbol">(</span>predicate<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">BoolPredicate</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in lazy.ts:195</li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Returns the number of elements in the iterable.</p> </div> <dl class="tsd-comment-tags"> <dt>remarks</dt> <dd><p>To determine whether an iterable has any elements, prefer the <a href="lazy.html#any">Lazy.any</a> method, as this will iterate the entire iterable regardless. This will cause a complete iteration of the iterable object.</p> </dd> </dl> </div> <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">number</span></h4> <p>The number of elements in the iterable.</p> </li> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in lazy.ts:204</li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Returns the number of elements that satify the given condition.</p> </div> <dl class="tsd-comment-tags"> <dt>remarks</dt> <dd><p>To determine whether an iterable has any elements, prefer the <a href="lazy.html#any">Lazy.any</a> method, as this will iterate the entire iterable regardless. This will cause a complete iteration of the iterable object.</p> </dd> </dl> </div> <h4 class="tsd-parameters-title">Parameters</h4> <ul class="tsd-parameters"> <li> <h5>predicate: <span class="tsd-signature-type">BoolPredicate</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span></h5> <div class="tsd-comment tsd-typography"> <p>The predicate to test each element with.</p> </div> </li> </ul> <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">number</span></h4> <p>The number of elements in the iterable that matched the condition.</p> </li> </ul> </section> <section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class"> <a name="defaultifempty" class="tsd-anchor"></a> <h3>default<wbr>IfEmpty</h3> <ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class"> <li class="tsd-signature tsd-kind-icon">default<wbr>IfEmpty<span class="tsd-signature-symbol">(</span>defaultValue<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="lazy.html" class="tsd-signature-type" data-tsd-kind="Class">Lazy</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">TElement</span><span class="tsd-signature-symbol">&gt;</span></li> </ul> <ul class="tsd-descriptions"> <li class="tsd-description"> <aside class="tsd-sources"> <ul> <li>Defined in lazy.ts:664</li> </ul> </aside> <div class="tsd-comment tsd-typography"> <div class="lead"> <p>Returns the elements in the iterable, or the given default value as the only element if it contained none.<