forked from actions/setup-maven
31 lines
1.0 KiB
JavaScript
31 lines
1.0 KiB
JavaScript
|
define(['./_getLength', './_setup', './isNaN'], function (_getLength, _setup, _isNaN) {
|
||
|
|
||
|
// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.
|
||
|
function createIndexFinder(dir, predicateFind, sortedIndex) {
|
||
|
return function(array, item, idx) {
|
||
|
var i = 0, length = _getLength(array);
|
||
|
if (typeof idx == 'number') {
|
||
|
if (dir > 0) {
|
||
|
i = idx >= 0 ? idx : Math.max(idx + length, i);
|
||
|
} else {
|
||
|
length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;
|
||
|
}
|
||
|
} else if (sortedIndex && idx && length) {
|
||
|
idx = sortedIndex(array, item);
|
||
|
return array[idx] === item ? idx : -1;
|
||
|
}
|
||
|
if (item !== item) {
|
||
|
idx = predicateFind(_setup.slice.call(array, i, length), _isNaN);
|
||
|
return idx >= 0 ? idx + i : -1;
|
||
|
}
|
||
|
for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {
|
||
|
if (array[idx] === item) return idx;
|
||
|
}
|
||
|
return -1;
|
||
|
};
|
||
|
}
|
||
|
|
||
|
return createIndexFinder;
|
||
|
|
||
|
});
|