123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import Check from "./Check.js";
- import defined from "./defined.js";
- import FeatureDetection from "./FeatureDetection.js";
- /**
- * Create a shallow copy of an array from begin to end.
- *
- * @param {Array} array The array to fill.
- * @param {Number} [begin=0] The index to start at.
- * @param {Number} [end=array.length] The index to end at which is not included.
- *
- * @returns {Array} The resulting array.
- * @private
- */
- function arraySlice(array, begin, end) {
- //>>includeStart('debug', pragmas.debug);
- Check.defined("array", array);
- if (defined(begin)) {
- Check.typeOf.number("begin", begin);
- }
- if (defined(end)) {
- Check.typeOf.number("end", end);
- }
- //>>includeEnd('debug');
- if (typeof array.slice === "function") {
- return array.slice(begin, end);
- }
- let copy = Array.prototype.slice.call(array, begin, end);
- const typedArrayTypes = FeatureDetection.typedArrayTypes;
- const length = typedArrayTypes.length;
- for (let i = 0; i < length; ++i) {
- if (array instanceof typedArrayTypes[i]) {
- copy = new typedArrayTypes[i](copy);
- break;
- }
- }
- return copy;
- }
- export default arraySlice;
|