_array-includes.js 788 B

123456789101112131415161718192021
  1. // false -> Array#indexOf
  2. // true -> Array#includes
  3. var toIObject = require('./_to-iobject')
  4. , toLength = require('./_to-length')
  5. , toIndex = require('./_to-index');
  6. module.exports = function(IS_INCLUDES){
  7. return function($this, el, fromIndex){
  8. var O = toIObject($this)
  9. , length = toLength(O.length)
  10. , index = toIndex(fromIndex, length)
  11. , value;
  12. // Array#includes uses SameValueZero equality algorithm
  13. if(IS_INCLUDES && el != el)while(length > index){
  14. value = O[index++];
  15. if(value != value)return true;
  16. // Array#toIndex ignores holes, Array#includes - not
  17. } else for(;length > index; index++)if(IS_INCLUDES || index in O){
  18. if(O[index] === el)return IS_INCLUDES || index || 0;
  19. } return !IS_INCLUDES && -1;
  20. };
  21. };