Skip to content

ES spec-compliant Array.prototype.splice shim/polyfill/replacement that works as far down as ES3

License

Notifications You must be signed in to change notification settings

es-shims/Array.prototype.splice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Mar 14, 2025
2a08b78 · Mar 14, 2025

History

35 Commits
Mar 20, 2024
Apr 14, 2022
Apr 13, 2022
Apr 13, 2022
May 5, 2022
Apr 13, 2022
Apr 13, 2022
Mar 14, 2025
Apr 13, 2022
Apr 14, 2022
Apr 13, 2022
Mar 14, 2025
Mar 14, 2025
Mar 14, 2025
Mar 14, 2025
Apr 13, 2022

Repository files navigation

array.prototype.splice Version Badge

github actions coverage dependency status dev dependency status License Downloads

npm badge

An ES spec-compliant Array.prototype.splice shim/polyfill/replacement that works as far down as ES3.

This package implements the es-shim API interface. It works in an ES3-supported environment and complies with the spec.

Because Array.prototype.splice depends on a receiver (the “this” value), the main export takes the array to operate on as the first argument.

Engines where this is needed

Note: this list is not exhaustive.

  • IE 8 and below, and pre-ES6 engines: deleteCount isn't defaulted to length - start until ES6
  • Safari 5.0: sometimes it returns undefined
  • Safari 7/8: sparse arrays of size 1e5 or greater break
  • Opera 12.15: breaks on small sparse arrays

Example

var splice = require('array.prototype.splice');
var assert = require('assert');

var a = [1, 1, 1];
assert.deepEqual(splice(a, 1, 2), [1, 1]);
assert.deepEqual(a, [1]);
var splice = require('array.prototype.splice');
var assert = require('assert');
/* when Array#splice is not present */
delete Array.prototype.splice;
var shimmed = splice.shim();
assert.equal(shimmed, splice.getPolyfill());
assert.equal(shimmed, Array.prototype.splice);
assert.deepEqual([1, 2, 3].splice(1, 2, 3), splice([1, 2, 3], 1, 2, 3));
var splice = require('array.prototype.splice');
var assert = require('assert');
/* when Array#splice is present */
var shimmed = splice.shim();
assert.equal(shimmed, Array.prototype.splice);
assert.deepEqual([1, 2, 3].splice(1, 2, 3), splice([1, 2, 3], 1, 2, 3));

Tests

Simply clone the repo, npm install, and run npm test