You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
21 lines
788 B
JavaScript
21 lines
788 B
JavaScript
7 years ago
|
// false -> Array#indexOf
|
||
|
// true -> Array#includes
|
||
|
var toIObject = require('./_to-iobject')
|
||
|
, toLength = require('./_to-length')
|
||
|
, toIndex = require('./_to-index');
|
||
|
module.exports = function(IS_INCLUDES){
|
||
|
return function($this, el, fromIndex){
|
||
|
var O = toIObject($this)
|
||
|
, length = toLength(O.length)
|
||
|
, index = toIndex(fromIndex, length)
|
||
|
, value;
|
||
|
// Array#includes uses SameValueZero equality algorithm
|
||
|
if(IS_INCLUDES && el != el)while(length > index){
|
||
|
value = O[index++];
|
||
|
if(value != value)return true;
|
||
|
// Array#toIndex ignores holes, Array#includes - not
|
||
|
} else for(;length > index; index++)if(IS_INCLUDES || index in O){
|
||
|
if(O[index] === el)return IS_INCLUDES || index || 0;
|
||
|
} return !IS_INCLUDES && -1;
|
||
|
};
|
||
|
};
|