| 'use strict'; | 
| var toIndexedObject = require('../internals/to-indexed-object'); | 
| var toAbsoluteIndex = require('../internals/to-absolute-index'); | 
| var lengthOfArrayLike = require('../internals/length-of-array-like'); | 
|   | 
| // `Array.prototype.{ indexOf, includes }` methods implementation | 
| var createMethod = function (IS_INCLUDES) { | 
|   return function ($this, el, fromIndex) { | 
|     var O = toIndexedObject($this); | 
|     var length = lengthOfArrayLike(O); | 
|     if (length === 0) return !IS_INCLUDES && -1; | 
|     var index = toAbsoluteIndex(fromIndex, length); | 
|     var value; | 
|     // Array#includes uses SameValueZero equality algorithm | 
|     // eslint-disable-next-line no-self-compare -- NaN check | 
|     if (IS_INCLUDES && el !== el) while (length > index) { | 
|       value = O[index++]; | 
|       // eslint-disable-next-line no-self-compare -- NaN check | 
|       if (value !== value) return true; | 
|     // Array#indexOf ignores holes, Array#includes - not | 
|     } else for (;length > index; index++) { | 
|       if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; | 
|     } return !IS_INCLUDES && -1; | 
|   }; | 
| }; | 
|   | 
| module.exports = { | 
|   // `Array.prototype.includes` method | 
|   // https://tc39.es/ecma262/#sec-array.prototype.includes | 
|   includes: createMethod(true), | 
|   // `Array.prototype.indexOf` method | 
|   // https://tc39.es/ecma262/#sec-array.prototype.indexof | 
|   indexOf: createMethod(false) | 
| }; |