1234567891011121314151617181920212223242526272829303132 |
- var toObject = require('../internals/to-object');
- var toLength = require('../internals/to-length');
- var getIteratorMethod = require('../internals/get-iterator-method');
- var isArrayIteratorMethod = require('../internals/is-array-iterator-method');
- var bind = require('../internals/function-bind-context');
- var aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;
-
- module.exports = function from(source /* , mapfn, thisArg */) {
- var O = toObject(source);
- var argumentsLength = arguments.length;
- var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
- var mapping = mapfn !== undefined;
- var iteratorMethod = getIteratorMethod(O);
- var i, length, result, step, iterator, next;
- if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {
- iterator = iteratorMethod.call(O);
- next = iterator.next;
- O = [];
- while (!(step = next.call(iterator)).done) {
- O.push(step.value);
- }
- }
- if (mapping && argumentsLength > 2) {
- mapfn = bind(mapfn, arguments[2], 2);
- }
- length = toLength(O.length);
- result = new (aTypedArrayConstructor(this))(length);
- for (i = 0; length > i; i++) {
- result[i] = mapping ? mapfn(O[i], i) : O[i];
- }
- return result;
- };
|