Sha256: c70e2ae311d0c980611249ca7c1f570de4a9d30be11652826735e521760b07ed

Contents?: true

Size: 1.9 KB

Versions: 12

Compression:

Stored size: 1.9 KB

Contents

'use strict';
var $ = require('../internals/export');
var isObject = require('../internals/is-object');
var isArray = require('../internals/is-array');
var toAbsoluteIndex = require('../internals/to-absolute-index');
var toLength = require('../internals/to-length');
var toIndexedObject = require('../internals/to-indexed-object');
var createProperty = require('../internals/create-property');
var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');
var wellKnownSymbol = require('../internals/well-known-symbol');

var SPECIES = wellKnownSymbol('species');
var nativeSlice = [].slice;
var max = Math.max;

// `Array.prototype.slice` method
// https://tc39.github.io/ecma262/#sec-array.prototype.slice
// fallback for not array-like ES3 strings and DOM objects
$({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('slice') }, {
  slice: function slice(start, end) {
    var O = toIndexedObject(this);
    var length = toLength(O.length);
    var k = toAbsoluteIndex(start, length);
    var fin = toAbsoluteIndex(end === undefined ? length : end, length);
    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible
    var Constructor, result, n;
    if (isArray(O)) {
      Constructor = O.constructor;
      // cross-realm fallback
      if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {
        Constructor = undefined;
      } else if (isObject(Constructor)) {
        Constructor = Constructor[SPECIES];
        if (Constructor === null) Constructor = undefined;
      }
      if (Constructor === Array || Constructor === undefined) {
        return nativeSlice.call(O, k, fin);
      }
    }
    result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));
    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);
    result.length = n;
    return result;
  }
});

Version data entries

12 entries across 12 versions & 4 rubygems

Version Path
disco_app-0.18.0 test/dummy/node_modules/core-js/modules/es.array.slice.js
disco_app-0.18.2 test/dummy/node_modules/core-js/modules/es.array.slice.js
condenser-0.0.8 lib/condenser/processors/node_modules/core-js-pure/modules/es.array.slice.js
jester-data-8.0.0 node_modules/core-js/modules/es.array.slice.js
ezii-os-5.2.1 node_modules/core-js/modules/es.array.slice.js
ezii-os-2.0.1 node_modules/core-js/modules/es.array.slice.js
ezii-os-1.1.0 node_modules/core-js/modules/es.array.slice.js
ezii-os-1.0.0 node_modules/core-js/modules/es.array.slice.js
condenser-0.0.7 lib/condenser/processors/node_modules/core-js-pure/modules/es.array.slice.js
ezii-os-0.0.0.1.0 node_modules/core-js/modules/es.array.slice.js
ezii-os-0.0.0.0.1 node_modules/core-js/modules/es.array.slice.js
condenser-0.0.5 lib/condenser/processors/node_modules/core-js-pure/modules/es.array.slice.js