📜  JavaScript | typedArray.slice() 与示例(1)

📅  最后修改于: 2023-12-03 14:42:28.668000             🧑  作者: Mango

JavaScript | typedArray.slice() 与示例

简介

typedArray.slice() 方法返回一个新的 TypedArray 对象,该对象包含了指定范围内 TypedArray 对象的浅拷贝。起始和结束位置可通过索引(即从正数索引 0 开始)调用方法进行指定。

该方法并不改变原有的 TypedArray 对象,它只是返回一个从原始 TypedArray 对象的指定范围内拷贝值的新 TypedArray 对象。

语法
typedarray.slice(begin, end)
参数
  • begin (可选):浮点数,如果省略,默认为 0。
  • end (可选):浮点数,如果省略,默认为 typedArray.length
返回值

一个新的(类型化的)数组,它包含了 typedArraybeginend 范围内的浅拷贝。

示例
const int16Array = new Int16Array([1, 2, 3, 4, 5]);
const slicedArray = int16Array.slice(1, 3);
console.log(int16Array);             // Int16Array(5) [1, 2, 3, 4, 5]
console.log(slicedArray);            // Int16Array(2) [2, 3]
console.log(slicedArray.buffer);     // ArrayBuffer(10) {}
console.log(int16Array.buffer === slicedArray.buffer); // true

const float64Array = new Float64Array([1.1, 2.2, 3.3, 4.4, 5.5]);
const slicedFloatArray = float64Array.slice(-3);
console.log(float64Array);           // Float64Array(5) [1.1, 2.2, 3.3, 4.4, 5.5]
console.log(slicedFloatArray);       // Float64Array(3) [3.3, 4.4, 5.5]
console.log(slicedFloatArray.buffer);// ArrayBuffer(24) {}
console.log(float64Array.buffer === slicedFloatArray.buffer); // true

通过以上示例,我们可以看到:

  • typedArray.slice() 返回的是一个浅拷贝的新 TypedArray 对象。
  • 原数组与新数组共享同一缓冲区。
  • beginend 参数可选择性指定,如果未指定,则默认为 0 和 typedArray.length
  • 如果 beginend 参数为负数,则等价于 typedArray.length + begin/end
  • 不改变原来数据的状态,而是返回一个包含了指定范围内的值的新 TypedArray 对象。
参考文献