IterableToArrayLike.js 945 B

12345678910111213141516171819202122232425262728293031323334
  1. 'use strict';
  2. var getIteratorMethod = require('../helpers/getIteratorMethod');
  3. var AdvanceStringIndex = require('./AdvanceStringIndex');
  4. var GetIterator = require('./GetIterator');
  5. var GetMethod = require('./GetMethod');
  6. var IteratorStep = require('./IteratorStep');
  7. var IteratorValue = require('./IteratorValue');
  8. var ToObject = require('./ToObject');
  9. var ES = {
  10. AdvanceStringIndex: AdvanceStringIndex,
  11. GetMethod: GetMethod
  12. };
  13. // https://262.ecma-international.org/7.0/#sec-iterabletoarraylike
  14. module.exports = function IterableToArrayLike(items) {
  15. var usingIterator = getIteratorMethod(ES, items);
  16. if (typeof usingIterator !== 'undefined') {
  17. var iterator = GetIterator(items, usingIterator);
  18. var values = [];
  19. var next = true;
  20. while (next) {
  21. next = IteratorStep(iterator);
  22. if (next) {
  23. var nextValue = IteratorValue(next);
  24. values[values.length] = nextValue;
  25. }
  26. }
  27. return values;
  28. }
  29. return ToObject(items);
  30. };