Projekt

Obecné

Profil

Stáhnout (1.72 KB) Statistiky
| Větev: | Revize:
1
var baseFindIndex = require('./_baseFindIndex'),
2
    baseIteratee = require('./_baseIteratee'),
3
    toInteger = require('./toInteger');
4

    
5
/* Built-in method references for those with the same name as other `lodash` methods. */
6
var nativeMax = Math.max,
7
    nativeMin = Math.min;
8

    
9
/**
10
 * This method is like `_.findIndex` except that it iterates over elements
11
 * of `collection` from right to left.
12
 *
13
 * @static
14
 * @memberOf _
15
 * @since 2.0.0
16
 * @category Array
17
 * @param {Array} array The array to inspect.
18
 * @param {Function} [predicate=_.identity] The function invoked per iteration.
19
 * @param {number} [fromIndex=array.length-1] The index to search from.
20
 * @returns {number} Returns the index of the found element, else `-1`.
21
 * @example
22
 *
23
 * var users = [
24
 *   { 'user': 'barney',  'active': true },
25
 *   { 'user': 'fred',    'active': false },
26
 *   { 'user': 'pebbles', 'active': false }
27
 * ];
28
 *
29
 * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
30
 * // => 2
31
 *
32
 * // The `_.matches` iteratee shorthand.
33
 * _.findLastIndex(users, { 'user': 'barney', 'active': true });
34
 * // => 0
35
 *
36
 * // The `_.matchesProperty` iteratee shorthand.
37
 * _.findLastIndex(users, ['active', false]);
38
 * // => 2
39
 *
40
 * // The `_.property` iteratee shorthand.
41
 * _.findLastIndex(users, 'active');
42
 * // => 0
43
 */
44
function findLastIndex(array, predicate, fromIndex) {
45
  var length = array == null ? 0 : array.length;
46
  if (!length) {
47
    return -1;
48
  }
49
  var index = length - 1;
50
  if (fromIndex !== undefined) {
51
    index = toInteger(fromIndex);
52
    index = fromIndex < 0
53
      ? nativeMax(length + index, 0)
54
      : nativeMin(index, length - 1);
55
  }
56
  return baseFindIndex(array, baseIteratee(predicate, 3), index, true);
57
}
58

    
59
module.exports = findLastIndex;
(310-310/571)