mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
823 B
29 lines
823 B
'use strict';
|
|
|
|
var toPosInt = require('../../number/to-pos-integer')
|
|
, value = require('../../object/valid-value')
|
|
|
|
, indexOf = Array.prototype.indexOf
|
|
, hasOwnProperty = Object.prototype.hasOwnProperty
|
|
, abs = Math.abs, floor = Math.floor;
|
|
|
|
module.exports = function (searchElement/*, fromIndex*/) {
|
|
var i, l, fromIndex, val;
|
|
if (searchElement === searchElement) { //jslint: ignore
|
|
return indexOf.apply(this, arguments);
|
|
}
|
|
|
|
l = toPosInt(value(this).length);
|
|
fromIndex = arguments[1];
|
|
if (isNaN(fromIndex)) fromIndex = 0;
|
|
else if (fromIndex >= 0) fromIndex = floor(fromIndex);
|
|
else fromIndex = toPosInt(this.length) - floor(abs(fromIndex));
|
|
|
|
for (i = fromIndex; i < l; ++i) {
|
|
if (hasOwnProperty.call(this, i)) {
|
|
val = this[i];
|
|
if (val !== val) return i; //jslint: ignore
|
|
}
|
|
}
|
|
return -1;
|
|
};
|
|
|