source: frontend/node_modules/core-js-pure/modules/es.array.slice.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 11 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.1 KB
Line 
1'use strict';
2var $ = require('../internals/export');
3var isArray = require('../internals/is-array');
4var isConstructor = require('../internals/is-constructor');
5var isObject = require('../internals/is-object');
6var toAbsoluteIndex = require('../internals/to-absolute-index');
7var lengthOfArrayLike = require('../internals/length-of-array-like');
8var toIndexedObject = require('../internals/to-indexed-object');
9var createProperty = require('../internals/create-property');
10var setArrayLength = require('../internals/array-set-length');
11var wellKnownSymbol = require('../internals/well-known-symbol');
12var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');
13var nativeSlice = require('../internals/array-slice');
14
15var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');
16
17var SPECIES = wellKnownSymbol('species');
18var $Array = Array;
19var max = Math.max;
20
21// `Array.prototype.slice` method
22// https://tc39.es/ecma262/#sec-array.prototype.slice
23// fallback for not array-like ES3 strings and DOM objects
24$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {
25 slice: function slice(start, end) {
26 var O = toIndexedObject(this);
27 var length = lengthOfArrayLike(O);
28 var k = toAbsoluteIndex(start, length);
29 var fin = toAbsoluteIndex(end === undefined ? length : end, length);
30 // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible
31 var Constructor, result, n;
32 if (isArray(O)) {
33 Constructor = O.constructor;
34 // cross-realm fallback
35 if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {
36 Constructor = undefined;
37 } else if (isObject(Constructor)) {
38 Constructor = Constructor[SPECIES];
39 if (Constructor === null) Constructor = undefined;
40 }
41 if (Constructor === $Array || Constructor === undefined) {
42 return nativeSlice(O, k, fin);
43 }
44 }
45 result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));
46 for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);
47 setArrayLength(result, n);
48 return result;
49 }
50});
Note: See TracBrowser for help on using the repository browser.