UNPKG

1.75 kBJavaScriptView Raw
1/**
2 * lodash 3.1.0 (Custom Build) <https://lodash.com/>
3 * Build: `lodash modern modularize exports="npm" -o ./`
4 * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
5 * Based on Underscore.js 1.8.2 <http://underscorejs.org/LICENSE>
6 * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
7 * Available under MIT license <https://lodash.com/license>
8 */
9
10/**
11 * The base implementation of `_.indexOf` without support for binary searches.
12 *
13 * @private
14 * @param {Array} array The array to search.
15 * @param {*} value The value to search for.
16 * @param {number} fromIndex The index to search from.
17 * @returns {number} Returns the index of the matched value, else `-1`.
18 */
19function baseIndexOf(array, value, fromIndex) {
20 if (value !== value) {
21 return indexOfNaN(array, fromIndex);
22 }
23 var index = fromIndex - 1,
24 length = array.length;
25
26 while (++index < length) {
27 if (array[index] === value) {
28 return index;
29 }
30 }
31 return -1;
32}
33
34/**
35 * Gets the index at which the first occurrence of `NaN` is found in `array`.
36 * If `fromRight` is provided elements of `array` are iterated from right to left.
37 *
38 * @private
39 * @param {Array} array The array to search.
40 * @param {number} fromIndex The index to search from.
41 * @param {boolean} [fromRight] Specify iterating from right to left.
42 * @returns {number} Returns the index of the matched `NaN`, else `-1`.
43 */
44function indexOfNaN(array, fromIndex, fromRight) {
45 var length = array.length,
46 index = fromIndex + (fromRight ? 0 : -1);
47
48 while ((fromRight ? index-- : ++index < length)) {
49 var other = array[index];
50 if (other !== other) {
51 return index;
52 }
53 }
54 return -1;
55}
56
57module.exports = baseIndexOf;