| // false -> Array#indexOf |
| // true -> Array#includes |
| var toIObject = require('./_to-iobject'); |
| var toLength = require('./_to-length'); |
| var toAbsoluteIndex = require('./_to-absolute-index'); |
| module.exports = function (IS_INCLUDES) { |
| return function ($this, el, fromIndex) { |
| var O = toIObject($this); |
| var length = toLength(O.length); |
| var index = toAbsoluteIndex(fromIndex, length); |
| var value; |
| // Array#includes uses SameValueZero equality algorithm |
| // eslint-disable-next-line no-self-compare |
| if (IS_INCLUDES && el != el) while (length > index) { |
| value = O[index++]; |
| // eslint-disable-next-line no-self-compare |
| if (value != value) return true; |
| // Array#indexOf 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; |
| }; |
| }; |