| 'use strict'; | 
| var bind = require('../internals/function-bind-context'); | 
| var IndexedObject = require('../internals/indexed-object'); | 
| var toObject = require('../internals/to-object'); | 
| var lengthOfArrayLike = require('../internals/length-of-array-like'); | 
|   | 
| // `Array.prototype.{ findLast, findLastIndex }` methods implementation | 
| var createMethod = function (TYPE) { | 
|   var IS_FIND_LAST_INDEX = TYPE === 1; | 
|   return function ($this, callbackfn, that) { | 
|     var O = toObject($this); | 
|     var self = IndexedObject(O); | 
|     var index = lengthOfArrayLike(self); | 
|     var boundFunction = bind(callbackfn, that); | 
|     var value, result; | 
|     while (index-- > 0) { | 
|       value = self[index]; | 
|       result = boundFunction(value, index, O); | 
|       if (result) switch (TYPE) { | 
|         case 0: return value; // findLast | 
|         case 1: return index; // findLastIndex | 
|       } | 
|     } | 
|     return IS_FIND_LAST_INDEX ? -1 : undefined; | 
|   }; | 
| }; | 
|   | 
| module.exports = { | 
|   // `Array.prototype.findLast` method | 
|   // https://github.com/tc39/proposal-array-find-from-last | 
|   findLast: createMethod(0), | 
|   // `Array.prototype.findLastIndex` method | 
|   // https://github.com/tc39/proposal-array-find-from-last | 
|   findLastIndex: createMethod(1) | 
| }; |