What is typedarray.prototype.slice?
The `typedarray.prototype.slice` npm package provides a polyfill for the `slice` method on TypedArray objects. This allows you to create a new TypedArray from a portion of an existing TypedArray, similar to how `Array.prototype.slice` works for regular arrays.
What are typedarray.prototype.slice's main functionalities?
Slice a portion of a TypedArray
This feature allows you to slice a portion of a TypedArray, creating a new TypedArray from the specified start to end indices.
const slice = require('typedarray.prototype.slice');
const uint8 = new Uint8Array([1, 2, 3, 4, 5]);
const sliced = slice.call(uint8, 1, 3);
console.log(sliced); // Output: Uint8Array [2, 3]
Slice with negative indices
This feature allows you to use negative indices to slice a portion of a TypedArray, which counts back from the end of the array.
const slice = require('typedarray.prototype.slice');
const uint8 = new Uint8Array([1, 2, 3, 4, 5]);
const sliced = slice.call(uint8, -3, -1);
console.log(sliced); // Output: Uint8Array [3, 4]
Other packages similar to typedarray.prototype.slice
typedarray
The `typedarray` package provides a comprehensive set of utilities for working with TypedArrays, including polyfills for various methods. It offers broader functionality compared to `typedarray.prototype.slice`, which focuses specifically on the `slice` method.
buffer
The `buffer` package is a Node.js core module that provides a way to handle binary data. It includes a `slice` method for Buffer objects, which are similar to TypedArrays. While it is not a direct polyfill for TypedArrays, it offers similar slicing capabilities for Buffer objects.
TypedArray.prototype.slice
An ES spec-compliant TypedArray.prototype.slice
shim. Invoke its "shim" method to shim TypedArray.prototype.slice if it is unavailable.
This package implements the es-shim API interface. It works in an ES5-supported environment and complies with the spec.
Most common usage:
var assert = require('assert');
var slice = require('typedarray.prototype.slice');
var arr = new Uint8Array([1, 2, 3]);
var arr2 = slice(arr);
arr2[0] = 2;
arr2[1] = 3;
assert.deepEqual(arr, new Uint8Array([1, 2, 3]));
assert.deepEqual(arr2, new Uint8Array([2, 3, 3]));
assert.notEqual(arr.buffer, arr2.buffer);
if (!Uint8Array.prototype.slice) {
slice.shim();
}
var arr3 = arr.slice();
arr3[0] = 2;
arr3[1] = 3;
assert.deepEqual(arr, new Uint8Array([1, 2, 3]));
assert.deepEqual(arr3, new Uint8Array([2, 3, 3]));
assert.notEqual(arr.buffer, arr3.buffer);
Engines where this is needed
- node v0.11.4 - v4: no prototype or own `slice` method
- node < v0.11.3: own `slice` method that fails to clone the underlying buffer
Tests
Simply clone the repo, npm install
, and run npm test