slice()
method returns a shallow copy of a portion of a typed array into a new typed array object. This method has the same algorithm as
Array.prototype.slice()
.
TypedArray
is one of the
typed array types
here.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
typedarray.slice([begin[, end]])
begin
可选
Zero-based index at which to begin extraction.
slice(-2)
extracts the last two elements in the sequence.
begin
is undefined,
slice
begins from index
0
.
end
可选
slice
extracts up to but not including
end
.
slice(1,4)
extracts the second element through the fourth element (elements indexed 1, 2, and 3).
slice(2,-1)
extracts the third element through the second-to-last element in the sequence.
end
被省略,
slice
extracts through the end of the sequence (
typedarray.length
).
A new typed array containing the extracted elements.
slice
method does not alter. It returns a shallow copy of elements from the original typed array.
If a new element is added to either typed array, the other typed array is not affected.
Since there is no global object with the name TypedArray , polyfilling must be done on an "as needed" basis.
if (!Uint8Array.prototype.slice) {
Object.defineProperty(Uint8Array.prototype, 'slice', {
value: function (begin, end)
{
return new Uint8Array(Array.prototype.slice.call(this, begin, end));
}
});
}
If you need to support truly obsolete JavaScript engines that don't support
Object.defineProperty
, it's best not to polyfill
Array.prototype
methods at all, as you can't make them non-enumerable.
const uint8 = new Uint8Array([1,2,3]); uint8.slice(1); // Uint8Array [ 2, 3 ] uint8.slice(2); // Uint8Array [ 3 ] uint8.slice(-2); // Uint8Array [ 2, 3 ] uint8.slice(0,1); // Uint8Array [ 1 ]
| 规范 |
|---|
|
ECMAScript (ECMA-262)
The definition of '%TypedArray%.prototype.slice' in that specification. |
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
slice
|
Chrome 45 | Edge 14 | Firefox 38 | IE No | Opera 32 | Safari 10 | WebView Android 45 | Chrome Android 45 | Firefox Android 38 | Opera Android 32 | Safari iOS 10 | Samsung Internet Android 5.0 | nodejs 4.0.0 |
完整支持
不支持
TypedArray
TypedArray.from()
TypedArray.of()
TypedArray.prototype.copyWithin()
TypedArray.prototype.entries()
TypedArray.prototype.every()
TypedArray.prototype.fill()
TypedArray.prototype.filter()
TypedArray.prototype.find()
TypedArray.prototype.findIndex()
TypedArray.prototype.forEach()
TypedArray.prototype.includes()
TypedArray.prototype.indexOf()
TypedArray.prototype.join()
TypedArray.prototype.keys()
TypedArray.prototype.lastIndexOf()
TypedArray.prototype.map()
TypedArray.prototype.reduce()
TypedArray.prototype.reduceRight()
TypedArray.prototype.reverse()
TypedArray.prototype.set()
TypedArray.prototype.slice()
TypedArray.prototype.some()
TypedArray.prototype.sort()
TypedArray.prototype.subarray()
TypedArray.prototype.toLocaleString()
TypedArray.prototype.toString()
TypedArray.prototype.values()
TypedArray.prototype[@@iterator]()
Int8Array
Uint8Array
Uint8ClampedArray
Int16Array
Uint16Array
Int32Array
Uint32Array
Float32Array
Float64Array
BigInt64Array
BigUint64Array
Function
Object
Object.prototype.__defineGetter__()
Object.prototype.__defineSetter__()
Object.prototype.__lookupGetter__()
Object.prototype.__lookupSetter__()
Object.prototype.hasOwnProperty()
Object.prototype.isPrototypeOf()
Object.prototype.propertyIsEnumerable()
Object.prototype.toLocaleString()
Object.prototype.toSource()
Object.prototype.toString()
Object.prototype.valueOf()
Object.setPrototypeOf()