buckets-js
Version:
Buckets is a complete, fully tested and documented data structure library written in pure JavaScript.
851 lines (517 loc) • 19.6 kB
HTML
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="generator" content="JsDoc Toolkit" />
<title>JsDoc Reference - buckets.Bag</title>
<style type="text/css">
/* default.css */
body
{
font: 13.5px sans-serif;
line-height: 20px;
max-width: 950px;
-webkit-font-smoothing: antialiased;
text-align: justify;
}
h1
{
padding: 0;
color: rgb(65, 131, 196);
margin: 0 auto;
padding-top: 18px;
}
#index
{
margin-top: 15px;
margin-left: 15px;
width: 160px;
position: absolute;
left: 8px;
padding: 8px;
background: #fafafa;
padding-top: 12px;
padding-left: 6px;
padding-right: 12px;
padding-bottom: 0px;
border: 1px solid rgba(0, 0, 0, 0.1);
}
#content
{
margin-left: 220px;
}
.classList li
{
padding: 0;
margin: 0 0 8px 0;
}
.summaryTable {
width: 100%;
}
h2 { font-size: 110%; }
caption, div.sectionTitle
{
box-sizing: border-box;
color: rgb(51, 51, 51);
background-color: #fafafa;
line-height: 25px;
font-family: Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, 'Segoe UI Emoji', 'Segoe UI Symbol';
font-size: 14px;
font-style: normal;
font-variant: normal;
font-weight: bold;
text-align: left;
padding: 2px 6px 2px 6px;
border: 1px rgb(216, 216, 216) solid;
}
div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }
.summaryTable td
{
vertical-align: top;
padding: 4px;
border-bottom: 1px rgb(216, 216, 216) solid;
border-right: 1px rgb(216, 216, 216) solid;
border-left: 1px rgb(216, 216, 216) solid;
}
/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
border-left: 1px;
width: 140px;
text-align: right;
}
td.attributes, .fixedFont
{
color: rgb(2, 74, 8);
font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
}
.summaryTable td.nameDescription
{
text-align: left;
}
.summaryTable { margin-bottom: 8px; }
.detailList .heading
{
font-weight: bold;
padding-bottom: 6px;
margin-left: 0;
}
.classList {
list-style-type: none;
padding: 0;
margin: 0 0 0 8px;
font-family: sans-serif;
font-size: 1em;
overflow: auto;
}
a { color:#4285f4;
text-decoration: none;
}
hr {
border: 0;
border-top: 1px solid rgb(216, 216, 216);
border-bottom: 1px solid rgba(255, 255, 255, 0.3);
}
td.nameDescription.fixedFont {
color: rgb(0, 0, 0);
}
span.light {
color: rgb(148, 149, 155);
font-weight: bold;
}
pre {
background: #fafafa;
padding-top: 16px;
padding-bottom: 16px;
padding-left: 16px;
padding-right: 16px;
/* border: 1px solid rgba(0, 0, 0, 0.1); */
font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
font-style: normal;
font-variant: normal;
font-weight: normal;
border: 1px solid rgba(0, 0, 0, 0.1);
color: rgb(124, 19, 0);
}
</style>
</head>
<body>
<!-- ============================== header ================================= -->
<!-- begin static/header.html -->
<div id="header">
</div>
<!-- end static/header.html -->
<!-- ============================== classes index ============================ -->
<div id="index">
<!-- begin publish.classesIndex -->
<ul class="classList">
<li><a href="../symbols/buckets.arrays.html">buckets.arrays</a></li>
<li><a href="../symbols/buckets.Bag.html">buckets.Bag</a></li>
<li><a href="../symbols/buckets.BSTree.html">buckets.BSTree</a></li>
<li><a href="../symbols/buckets.Dictionary.html">buckets.Dictionary</a></li>
<li><a href="../symbols/buckets.Heap.html">buckets.Heap</a></li>
<li><a href="../symbols/buckets.LinkedList.html">buckets.LinkedList</a></li>
<li><a href="../symbols/buckets.MultiDictionary.html">buckets.MultiDictionary</a></li>
<li><a href="../symbols/buckets.PriorityQueue.html">buckets.PriorityQueue</a></li>
<li><a href="../symbols/buckets.Queue.html">buckets.Queue</a></li>
<li><a href="../symbols/buckets.Set.html">buckets.Set</a></li>
<li><a href="../symbols/buckets.Stack.html">buckets.Stack</a></li>
</ul>
<!-- end publish.classesIndex -->
</div>
<div id="content">
<!-- ============================== class title ============================ -->
<h1 class="classTitle">
Object buckets.Bag
</h1>
<!-- ============================== class summary ========================== -->
<p class="description">
<p>A bag is a special kind of set in which members are
allowed to appear more than once.</p>
<p>If the inserted elements are custom objects, a function
that maps elements to unique strings must be provided at construction time.</p>
<p>Example:</p>
<pre>
function petToUniqueString(pet) {
return pet.type + ' ' + pet.name;
}
</pre>
</p>
<!-- ============================== constructor summary ==================== -->
<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class buckets.Bag.">
<caption>Object Summary</caption>
<thead>
<tr>
<th scope="col">Constructor Name and Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="nameDescription" >
<div class="fixedFont">
<b><a href="../symbols/buckets.Bag.html#constructor">buckets.Bag</a></b>(toStrFunction)
</div>
<div class="description">Creates an empty bag.</div>
</td>
</tr>
</tbody>
</table>
<!-- ============================== properties summary ===================== -->
<!-- ============================== methods summary ======================== -->
<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class buckets.Bag.">
<caption>Method Summary</caption>
<thead>
<tr>
<th scope="col">Method Name and Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.Bag.<b><a href="../symbols/buckets.Bag.html#.add">add</a></b>(element, nCopies)
</div>
<div class="description">Adds nCopies of the specified element to the bag.</div>
</td>
</tr>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.Bag.<b><a href="../symbols/buckets.Bag.html#.clear">clear</a></b>()
</div>
<div class="description">Removes all the elements from the bag.</div>
</td>
</tr>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.Bag.<b><a href="../symbols/buckets.Bag.html#.contains">contains</a></b>(element)
</div>
<div class="description">Returns true if the bag contains the specified element.</div>
</td>
</tr>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.Bag.<b><a href="../symbols/buckets.Bag.html#.count">count</a></b>(element)
</div>
<div class="description">Counts the number of copies of the specified element in the bag.</div>
</td>
</tr>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.Bag.<b><a href="../symbols/buckets.Bag.html#.equals">equals</a></b>(other)
</div>
<div class="description">Returns true if the bag is equal to another bag.</div>
</td>
</tr>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.Bag.<b><a href="../symbols/buckets.Bag.html#.forEach">forEach</a></b>(callback)
</div>
<div class="description">Executes the provided function once per element
present in the bag, including multiple copies.</div>
</td>
</tr>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.Bag.<b><a href="../symbols/buckets.Bag.html#.isEmpty">isEmpty</a></b>()
</div>
<div class="description">Returns true if the bag contains no elements.</div>
</td>
</tr>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.Bag.<b><a href="../symbols/buckets.Bag.html#.remove">remove</a></b>(element, nCopies)
</div>
<div class="description">Removes nCopies of the specified element from the bag.</div>
</td>
</tr>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.Bag.<b><a href="../symbols/buckets.Bag.html#.size">size</a></b>()
</div>
<div class="description">Returns the number of elements in the bag, including duplicates.</div>
</td>
</tr>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.Bag.<b><a href="../symbols/buckets.Bag.html#.toArray">toArray</a></b>()
</div>
<div class="description">Returns an array containing all the elements in the bag in no particular order,
including multiple copies.</div>
</td>
</tr>
<tr>
<td class="nameDescription">
<div class="fixedFont">buckets.Bag.<b><a href="../symbols/buckets.Bag.html#.toSet">toSet</a></b>()
</div>
<div class="description">Returns a set of unique elements in the bag.</div>
</td>
</tr>
</tbody>
</table>
<!-- ============================== events summary ======================== -->
<!-- ============================== constructor details ==================== -->
<div class="details"><a name="constructor"> </a>
<div class="sectionTitle">
Object Detail
</div>
<div class="fixedFont">
<b>buckets.Bag</b>(toStrFunction)
</div>
<div class="description">
Creates an empty bag.
</div>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{function(Object):string=}</span> <b>toStrFunction</b>
</dt>
<dd>Optional function
to convert elements to unique strings. If the elements aren't strings or if toString()
is not appropriate, a custom function which receives an object and returns a
unique string must be provided.</dd>
</dl>
</div>
<!-- ============================== field details ========================== -->
<!-- ============================== method details ========================= -->
<div class="sectionTitle">
Method Detail
</div>
<a name=".add"> </a>
<div class="fixedFont"><static>
<span class="light">{boolean}</span>
<span class="light">buckets.Bag.</span><b>add</b>(element, nCopies)
</div>
<div class="description">
Adds nCopies of the specified element to the bag.
</div>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{Object}</span> <b>element</b>
</dt>
<dd>Element to add.</dd>
<dt>
<span class="light fixedFont">{number=}</span> <b>nCopies</b>
</dt>
<dd>The number of copies to add, if this argument is
undefined 1 copy is added.</dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd><span class="light fixedFont">{boolean}</span> True unless element is undefined.</dd>
</dl>
<hr />
<a name=".clear"> </a>
<div class="fixedFont"><static>
<span class="light">buckets.Bag.</span><b>clear</b>()
</div>
<div class="description">
Removes all the elements from the bag.
</div>
<hr />
<a name=".contains"> </a>
<div class="fixedFont"><static>
<span class="light">{boolean}</span>
<span class="light">buckets.Bag.</span><b>contains</b>(element)
</div>
<div class="description">
Returns true if the bag contains the specified element.
</div>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{Object}</span> <b>element</b>
</dt>
<dd>Element to search for.</dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd><span class="light fixedFont">{boolean}</span> True if the bag contains the specified element,
false otherwise.</dd>
</dl>
<hr />
<a name=".count"> </a>
<div class="fixedFont"><static>
<span class="light">{number}</span>
<span class="light">buckets.Bag.</span><b>count</b>(element)
</div>
<div class="description">
Counts the number of copies of the specified element in the bag.
</div>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{Object}</span> <b>element</b>
</dt>
<dd>The element to search for.</dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd><span class="light fixedFont">{number}</span> The number of copies of the element, 0 if not found.</dd>
</dl>
<hr />
<a name=".equals"> </a>
<div class="fixedFont"><static>
<span class="light">{boolean}</span>
<span class="light">buckets.Bag.</span><b>equals</b>(other)
</div>
<div class="description">
Returns true if the bag is equal to another bag.
Two bags are equal if they have the same elements and
same number of copies per element.
</div>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{<a href="../symbols/buckets.Bag.html">buckets.Bag</a>}</span> <b>other</b>
</dt>
<dd>The other bag.</dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd><span class="light fixedFont">{boolean}</span> True if the bag is equal to the given bag.</dd>
</dl>
<hr />
<a name=".forEach"> </a>
<div class="fixedFont"><static>
<span class="light">buckets.Bag.</span><b>forEach</b>(callback)
</div>
<div class="description">
Executes the provided function once per element
present in the bag, including multiple copies.
</div>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{function(Object):*}</span> <b>callback</b>
</dt>
<dd>Function to execute, it's
invoked with an element as argument. To break the iteration you can
optionally return false in the callback.</dd>
</dl>
<hr />
<a name=".isEmpty"> </a>
<div class="fixedFont"><static>
<span class="light">{boolean}</span>
<span class="light">buckets.Bag.</span><b>isEmpty</b>()
</div>
<div class="description">
Returns true if the bag contains no elements.
</div>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd><span class="light fixedFont">{boolean}</span> True if the bag contains no elements.</dd>
</dl>
<hr />
<a name=".remove"> </a>
<div class="fixedFont"><static>
<span class="light">{boolean}</span>
<span class="light">buckets.Bag.</span><b>remove</b>(element, nCopies)
</div>
<div class="description">
Removes nCopies of the specified element from the bag.
If the number of copies to remove is greater than the actual number
of copies in the bag, all copies are removed.
</div>
<dl class="detailList">
<dt class="heading">Parameters:</dt>
<dt>
<span class="light fixedFont">{Object}</span> <b>element</b>
</dt>
<dd>Element to remove.</dd>
<dt>
<span class="light fixedFont">{number=}</span> <b>nCopies</b>
</dt>
<dd>The number of copies to remove, if this argument is
undefined 1 copy is removed.</dd>
</dl>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd><span class="light fixedFont">{boolean}</span> True if at least 1 copy was removed.</dd>
</dl>
<hr />
<a name=".size"> </a>
<div class="fixedFont"><static>
<span class="light">{number}</span>
<span class="light">buckets.Bag.</span><b>size</b>()
</div>
<div class="description">
Returns the number of elements in the bag, including duplicates.
</div>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd><span class="light fixedFont">{number}</span> The number of elements in the bag.</dd>
</dl>
<hr />
<a name=".toArray"> </a>
<div class="fixedFont"><static>
<span class="light">{Array}</span>
<span class="light">buckets.Bag.</span><b>toArray</b>()
</div>
<div class="description">
Returns an array containing all the elements in the bag in no particular order,
including multiple copies.
</div>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd><span class="light fixedFont">{Array}</span> An array containing all the elements in the bag.</dd>
</dl>
<hr />
<a name=".toSet"> </a>
<div class="fixedFont"><static>
<span class="light">{<a href="../symbols/buckets.Set.html">buckets.Set</a>}</span>
<span class="light">buckets.Bag.</span><b>toSet</b>()
</div>
<div class="description">
Returns a set of unique elements in the bag.
</div>
<dl class="detailList">
<dt class="heading">Returns:</dt>
<dd><span class="light fixedFont">{<a href="../symbols/buckets.Set.html">buckets.Set</a>}</span> A set of unique elements in the bag.</dd>
</dl>
<!-- ============================== event details ========================= -->
<hr />
</div>
</body>
</html>