1234567891011121314151617181920212223242526272829 |
- 'use strict';
- var toPosInt = require('../../number/to-pos-integer')
- , value = require('../../object/valid-value')
- , lastIndexOf = Array.prototype.lastIndexOf
- , hasOwnProperty = Object.prototype.hasOwnProperty
- , abs = Math.abs, floor = Math.floor;
- module.exports = function (searchElement/*, fromIndex*/) {
- var i, fromIndex, val;
- if (searchElement === searchElement) { //jslint: ignore
- return lastIndexOf.apply(this, arguments);
- }
- value(this);
- fromIndex = arguments[1];
- if (isNaN(fromIndex)) fromIndex = (toPosInt(this.length) - 1);
- else if (fromIndex >= 0) fromIndex = floor(fromIndex);
- else fromIndex = toPosInt(this.length) - floor(abs(fromIndex));
- for (i = fromIndex; i >= 0; --i) {
- if (hasOwnProperty.call(this, i)) {
- val = this[i];
- if (val !== val) return i; //jslint: ignore
- }
- }
- return -1;
- };
|