docs/modules/_createIndexFinder.html
<!DOCTYPE html>
<html>
<head>
<title>_createIndexFinder.js</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
<link rel="stylesheet" media="all" href="../docco.css" />
</head>
<body>
<div id="container">
<div id="background"></div>
<ul id="jump_to">
<li>
<a class="large" href="javascript:void(0);">Jump To …</a>
<a class="small" href="javascript:void(0);">+</a>
<div id="jump_wrapper">
<div id="jump_page_wrapper">
<div id="jump_page">
<a class="source" href="_baseCreate.html">
modules/_baseCreate.js
</a>
<a class="source" href="_baseIteratee.html">
modules/_baseIteratee.js
</a>
<a class="source" href="_cb.html">
modules/_cb.js
</a>
<a class="source" href="_chainResult.html">
modules/_chainResult.js
</a>
<a class="source" href="_collectNonEnumProps.html">
modules/_collectNonEnumProps.js
</a>
<a class="source" href="_createAssigner.html">
modules/_createAssigner.js
</a>
<a class="source" href="_createEscaper.html">
modules/_createEscaper.js
</a>
<a class="source" href="_createIndexFinder.html">
modules/_createIndexFinder.js
</a>
<a class="source" href="_createPredicateIndexFinder.html">
modules/_createPredicateIndexFinder.js
</a>
<a class="source" href="_createReduce.html">
modules/_createReduce.js
</a>
<a class="source" href="_createSizePropertyCheck.html">
modules/_createSizePropertyCheck.js
</a>
<a class="source" href="_deepGet.html">
modules/_deepGet.js
</a>
<a class="source" href="_escapeMap.html">
modules/_escapeMap.js
</a>
<a class="source" href="_executeBound.html">
modules/_executeBound.js
</a>
<a class="source" href="_flatten.html">
modules/_flatten.js
</a>
<a class="source" href="_getByteLength.html">
modules/_getByteLength.js
</a>
<a class="source" href="_getLength.html">
modules/_getLength.js
</a>
<a class="source" href="_group.html">
modules/_group.js
</a>
<a class="source" href="_has.html">
modules/_has.js
</a>
<a class="source" href="_hasObjectTag.html">
modules/_hasObjectTag.js
</a>
<a class="source" href="_isArrayLike.html">
modules/_isArrayLike.js
</a>
<a class="source" href="_isBufferLike.html">
modules/_isBufferLike.js
</a>
<a class="source" href="_keyInObj.html">
modules/_keyInObj.js
</a>
<a class="source" href="_methodFingerprint.html">
modules/_methodFingerprint.js
</a>
<a class="source" href="_optimizeCb.html">
modules/_optimizeCb.js
</a>
<a class="source" href="_setup.html">
modules/_setup.js
</a>
<a class="source" href="_shallowProperty.html">
modules/_shallowProperty.js
</a>
<a class="source" href="_stringTagBug.html">
modules/_stringTagBug.js
</a>
<a class="source" href="_tagTester.html">
modules/_tagTester.js
</a>
<a class="source" href="_toBufferView.html">
modules/_toBufferView.js
</a>
<a class="source" href="_toPath.html">
modules/_toPath.js
</a>
<a class="source" href="_unescapeMap.html">
modules/_unescapeMap.js
</a>
<a class="source" href="after.html">
modules/after.js
</a>
<a class="source" href="allKeys.html">
modules/allKeys.js
</a>
<a class="source" href="before.html">
modules/before.js
</a>
<a class="source" href="bind.html">
modules/bind.js
</a>
<a class="source" href="bindAll.html">
modules/bindAll.js
</a>
<a class="source" href="chain.html">
modules/chain.js
</a>
<a class="source" href="chunk.html">
modules/chunk.js
</a>
<a class="source" href="clone.html">
modules/clone.js
</a>
<a class="source" href="compact.html">
modules/compact.js
</a>
<a class="source" href="compose.html">
modules/compose.js
</a>
<a class="source" href="constant.html">
modules/constant.js
</a>
<a class="source" href="contains.html">
modules/contains.js
</a>
<a class="source" href="countBy.html">
modules/countBy.js
</a>
<a class="source" href="create.html">
modules/create.js
</a>
<a class="source" href="debounce.html">
modules/debounce.js
</a>
<a class="source" href="defaults.html">
modules/defaults.js
</a>
<a class="source" href="defer.html">
modules/defer.js
</a>
<a class="source" href="delay.html">
modules/delay.js
</a>
<a class="source" href="difference.html">
modules/difference.js
</a>
<a class="source" href="each.html">
modules/each.js
</a>
<a class="source" href="escape.html">
modules/escape.js
</a>
<a class="source" href="every.html">
modules/every.js
</a>
<a class="source" href="extend.html">
modules/extend.js
</a>
<a class="source" href="extendOwn.html">
modules/extendOwn.js
</a>
<a class="source" href="filter.html">
modules/filter.js
</a>
<a class="source" href="find.html">
modules/find.js
</a>
<a class="source" href="findIndex.html">
modules/findIndex.js
</a>
<a class="source" href="findKey.html">
modules/findKey.js
</a>
<a class="source" href="findLastIndex.html">
modules/findLastIndex.js
</a>
<a class="source" href="findWhere.html">
modules/findWhere.js
</a>
<a class="source" href="first.html">
modules/first.js
</a>
<a class="source" href="flatten.html">
modules/flatten.js
</a>
<a class="source" href="functions.html">
modules/functions.js
</a>
<a class="source" href="get.html">
modules/get.js
</a>
<a class="source" href="groupBy.html">
modules/groupBy.js
</a>
<a class="source" href="has.html">
modules/has.js
</a>
<a class="source" href="identity.html">
modules/identity.js
</a>
<a class="source" href="index-all.html">
modules/index-all.js
</a>
<a class="source" href="index-default.html">
modules/index-default.js
</a>
<a class="source" href="index.html">
modules/index.js
</a>
<a class="source" href="indexBy.html">
modules/indexBy.js
</a>
<a class="source" href="indexOf.html">
modules/indexOf.js
</a>
<a class="source" href="initial.html">
modules/initial.js
</a>
<a class="source" href="intersection.html">
modules/intersection.js
</a>
<a class="source" href="invert.html">
modules/invert.js
</a>
<a class="source" href="invoke.html">
modules/invoke.js
</a>
<a class="source" href="isArguments.html">
modules/isArguments.js
</a>
<a class="source" href="isArray.html">
modules/isArray.js
</a>
<a class="source" href="isArrayBuffer.html">
modules/isArrayBuffer.js
</a>
<a class="source" href="isBoolean.html">
modules/isBoolean.js
</a>
<a class="source" href="isDataView.html">
modules/isDataView.js
</a>
<a class="source" href="isDate.html">
modules/isDate.js
</a>
<a class="source" href="isElement.html">
modules/isElement.js
</a>
<a class="source" href="isEmpty.html">
modules/isEmpty.js
</a>
<a class="source" href="isEqual.html">
modules/isEqual.js
</a>
<a class="source" href="isError.html">
modules/isError.js
</a>
<a class="source" href="isFinite.html">
modules/isFinite.js
</a>
<a class="source" href="isFunction.html">
modules/isFunction.js
</a>
<a class="source" href="isMap.html">
modules/isMap.js
</a>
<a class="source" href="isMatch.html">
modules/isMatch.js
</a>
<a class="source" href="isNaN.html">
modules/isNaN.js
</a>
<a class="source" href="isNull.html">
modules/isNull.js
</a>
<a class="source" href="isNumber.html">
modules/isNumber.js
</a>
<a class="source" href="isObject.html">
modules/isObject.js
</a>
<a class="source" href="isRegExp.html">
modules/isRegExp.js
</a>
<a class="source" href="isSet.html">
modules/isSet.js
</a>
<a class="source" href="isString.html">
modules/isString.js
</a>
<a class="source" href="isSymbol.html">
modules/isSymbol.js
</a>
<a class="source" href="isTypedArray.html">
modules/isTypedArray.js
</a>
<a class="source" href="isUndefined.html">
modules/isUndefined.js
</a>
<a class="source" href="isWeakMap.html">
modules/isWeakMap.js
</a>
<a class="source" href="isWeakSet.html">
modules/isWeakSet.js
</a>
<a class="source" href="iteratee.html">
modules/iteratee.js
</a>
<a class="source" href="keys.html">
modules/keys.js
</a>
<a class="source" href="last.html">
modules/last.js
</a>
<a class="source" href="lastIndexOf.html">
modules/lastIndexOf.js
</a>
<a class="source" href="map.html">
modules/map.js
</a>
<a class="source" href="mapObject.html">
modules/mapObject.js
</a>
<a class="source" href="matcher.html">
modules/matcher.js
</a>
<a class="source" href="max.html">
modules/max.js
</a>
<a class="source" href="memoize.html">
modules/memoize.js
</a>
<a class="source" href="min.html">
modules/min.js
</a>
<a class="source" href="mixin.html">
modules/mixin.js
</a>
<a class="source" href="negate.html">
modules/negate.js
</a>
<a class="source" href="noop.html">
modules/noop.js
</a>
<a class="source" href="now.html">
modules/now.js
</a>
<a class="source" href="object.html">
modules/object.js
</a>
<a class="source" href="omit.html">
modules/omit.js
</a>
<a class="source" href="once.html">
modules/once.js
</a>
<a class="source" href="pairs.html">
modules/pairs.js
</a>
<a class="source" href="partial.html">
modules/partial.js
</a>
<a class="source" href="partition.html">
modules/partition.js
</a>
<a class="source" href="pick.html">
modules/pick.js
</a>
<a class="source" href="pluck.html">
modules/pluck.js
</a>
<a class="source" href="property.html">
modules/property.js
</a>
<a class="source" href="propertyOf.html">
modules/propertyOf.js
</a>
<a class="source" href="random.html">
modules/random.js
</a>
<a class="source" href="range.html">
modules/range.js
</a>
<a class="source" href="reduce.html">
modules/reduce.js
</a>
<a class="source" href="reduceRight.html">
modules/reduceRight.js
</a>
<a class="source" href="reject.html">
modules/reject.js
</a>
<a class="source" href="rest.html">
modules/rest.js
</a>
<a class="source" href="restArguments.html">
modules/restArguments.js
</a>
<a class="source" href="result.html">
modules/result.js
</a>
<a class="source" href="sample.html">
modules/sample.js
</a>
<a class="source" href="shuffle.html">
modules/shuffle.js
</a>
<a class="source" href="size.html">
modules/size.js
</a>
<a class="source" href="some.html">
modules/some.js
</a>
<a class="source" href="sortBy.html">
modules/sortBy.js
</a>
<a class="source" href="sortedIndex.html">
modules/sortedIndex.js
</a>
<a class="source" href="tap.html">
modules/tap.js
</a>
<a class="source" href="template.html">
modules/template.js
</a>
<a class="source" href="templateSettings.html">
modules/templateSettings.js
</a>
<a class="source" href="throttle.html">
modules/throttle.js
</a>
<a class="source" href="times.html">
modules/times.js
</a>
<a class="source" href="toArray.html">
modules/toArray.js
</a>
<a class="source" href="toPath.html">
modules/toPath.js
</a>
<a class="source" href="underscore-array-methods.html">
modules/underscore-array-methods.js
</a>
<a class="source" href="underscore.html">
modules/underscore.js
</a>
<a class="source" href="unescape.html">
modules/unescape.js
</a>
<a class="source" href="union.html">
modules/union.js
</a>
<a class="source" href="uniq.html">
modules/uniq.js
</a>
<a class="source" href="uniqueId.html">
modules/uniqueId.js
</a>
<a class="source" href="unzip.html">
modules/unzip.js
</a>
<a class="source" href="values.html">
modules/values.js
</a>
<a class="source" href="where.html">
modules/where.js
</a>
<a class="source" href="without.html">
modules/without.js
</a>
<a class="source" href="wrap.html">
modules/wrap.js
</a>
<a class="source" href="zip.html">
modules/zip.js
</a>
</div>
</div>
</li>
</ul>
<ul class="sections">
<li id="title">
<div class="annotation">
<h1>_createIndexFinder.js</h1>
</div>
</li>
<li id="section-1">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-1">¶</a>
</div>
</div>
<div class="content"><div class='highlight'><pre><span class="hljs-keyword">import</span> getLength <span class="hljs-keyword">from</span> <span class="hljs-string">'./_getLength.js'</span>;
<span class="hljs-keyword">import</span> { slice } <span class="hljs-keyword">from</span> <span class="hljs-string">'./_setup.js'</span>;
<span class="hljs-keyword">import</span> <span class="hljs-built_in">isNaN</span> <span class="hljs-keyword">from</span> <span class="hljs-string">'./isNaN.js'</span>;</pre></div></div>
</li>
<li id="section-2">
<div class="annotation">
<div class="pilwrap ">
<a class="pilcrow" href="#section-2">¶</a>
</div>
<p>Internal function to generate the <code>_.indexOf</code> and <code>_.lastIndexOf</code> functions.</p>
</div>
<div class="content"><div class='highlight'><pre><span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">createIndexFinder</span>(<span class="hljs-params">dir, predicateFind, sortedIndex</span>) {
<span class="hljs-keyword">return</span> <span class="hljs-keyword">function</span>(<span class="hljs-params">array, item, idx</span>) {
<span class="hljs-keyword">var</span> i = <span class="hljs-number">0</span>, length = <span class="hljs-title function_">getLength</span>(array);
<span class="hljs-keyword">if</span> (<span class="hljs-keyword">typeof</span> idx == <span class="hljs-string">'number'</span>) {
<span class="hljs-keyword">if</span> (dir > <span class="hljs-number">0</span>) {
i = idx >= <span class="hljs-number">0</span> ? idx : <span class="hljs-title class_">Math</span>.<span class="hljs-title function_">max</span>(idx + length, i);
} <span class="hljs-keyword">else</span> {
length = idx >= <span class="hljs-number">0</span> ? <span class="hljs-title class_">Math</span>.<span class="hljs-title function_">min</span>(idx + <span class="hljs-number">1</span>, length) : idx + length + <span class="hljs-number">1</span>;
}
} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (sortedIndex && idx && length) {
idx = <span class="hljs-title function_">sortedIndex</span>(array, item);
<span class="hljs-keyword">return</span> array[idx] === item ? idx : -<span class="hljs-number">1</span>;
}
<span class="hljs-keyword">if</span> (item !== item) {
idx = <span class="hljs-title function_">predicateFind</span>(slice.<span class="hljs-title function_">call</span>(array, i, length), <span class="hljs-built_in">isNaN</span>);
<span class="hljs-keyword">return</span> idx >= <span class="hljs-number">0</span> ? idx + i : -<span class="hljs-number">1</span>;
}
<span class="hljs-keyword">for</span> (idx = dir > <span class="hljs-number">0</span> ? i : length - <span class="hljs-number">1</span>; idx >= <span class="hljs-number">0</span> && idx < length; idx += dir) {
<span class="hljs-keyword">if</span> (array[idx] === item) <span class="hljs-keyword">return</span> idx;
}
<span class="hljs-keyword">return</span> -<span class="hljs-number">1</span>;
};
}</pre></div></div>
</li>
</ul>
</div>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script>
// We run a script at page load to inject the links after the fact.
// It would be more elegant to do this at page generation time, but
// unfortunately the docco infrastructure doesn't support this very well.
// Highlighted code is passed along as an unparsed HTML string, which would
// make this very tricky. In the script below, we exploit the fact that the
// HTML has already been parsed by the browser.
(function() {
// Define a regex for stripping the .html extension from anchor hrefs.
var extPattern = /\.html$/;
// Collect all module paths that we have an HTML page for.
var moduleMap = {};
$('#jump_page a.source').each(function() {
// Fortunately, translating anchor hrefs to ES module paths is easy,
// because both systems work relative to the current file by default.
var href = $(this).attr('href');
var path = href.replace(extPattern, '').split('/');
if (path[0] !== '..') path.unshift('.');
var normPath = path.join('/');
// Support both paths with and without extension.
moduleMap[normPath] = moduleMap[normPath + '.js'] = href;
});
// Find all 'from' keywords followed by a string (ES6 import statements).
$('.hljs-keyword').filter(function() {
var text = $(this).text();
return text === 'from' || text === 'import';
}).next('.hljs-string').each(function() {
// Finally, for each of these strings, replace it by a link if we have
// a matching HTML page.
var text = $(this).text();
var quote = text[0];
var path = text.slice(1, -1);
var matchingDoc = moduleMap[path];
if (!matchingDoc) return;
$(this).html(
quote + '<a href="' + matchingDoc + '">' + path + '</a>' + quote
);
});
}());
</script>
</body>
</html>