JavaScript - TypedArray copyWithin() 方法
JavaScript TypedArray 的 copyWithin() 方法将同一 TypedArray 中的元素复制到另一个位置,并返回修改后的 TypedArray,而不会改变其原始长度。该方法接受三个参数,其中一个参数指定为目标。
如果 target 参数值为 负数,该方法将在 TypedArray 的末尾插入一个元素。例如,如果 target = −1,则该值将插入到当前类型化数组的 末尾。
在 JavaScript 中,TypedArray 是类似数组的对象,它提供了一种在内存缓冲区中读写原始二进制数据的机制。
语法
以下是 JavaScript TypedArray copyWithin() 方法的语法 -
copyWithin(target, start, end)
参数
此方法接受三个名为"target"、"start"和"end"的参数,如下所述 -
target - 元素起始的从零开始的索引(位置)插入。
start − 元素开始复制的从零开始的索引。
end(可选) − 元素复制的从零开始的索引。该方法会复制直至末尾,但会将其排除。
返回值
此方法返回修改后的 TypedArray,而不会改变原始 TypedArray 的长度。
示例
示例 1
如果我们仅将 target 和 start 参数传递给此方法,它将从指定的目标位置(即 3)开始插入元素,并从指定的起始位置(即 0)开始从原始 TypedArray 复制元素,直到复制元素的长度等于原始 TypedArray 的长度 ([1, 2, 3, 4, 5, 6, 7, 8])。
<html>
<head>
<title>JavaScript TypedArray copyWithin() Method</title>
</head>
<body>
<script>
const T_array = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
document.write("Original TypedArray: ", T_array);
const target = 3;
const start = 0;
document.write("<br>Target(start insert) position at: ", target);
document.write("<br>Start copying position at: ", start);
T_array.copyWithin(target, start);
document.write("<br>Modified TypedArray: ", T_array);
</script>
</body>
</html>
输出
上述程序返回修改后的类型数组,形式为 [1,2,3,1,2,3,4,5]。
Original TypedArray: 1,2,3,4,5,6,7,8 Target(start insert) position at: 3 Start copying position at: 0 Modified TypedArray: 1,2,3,1,2,3,4,5
示例 2
如果我们将三个参数(target、start 和 end)全部传递给此方法,它将从指定的目标位置(即 4)开始插入元素,并从指定的起始位置(即 1)开始从原始 TypedArray 复制元素,直到(但不包括)指定的结束位置(即 3)。其余元素保持不变。
<html>
<head>
<title>JavaScript TypedArray copyWithin() Method</title>
</head>
<body>
<script>
const T_array = new Uint8Array([1, 2, 3, 0, 0, 0, 0, 0]);
document.write("Original TypedArray: ", T_array);
const target = 4;
const start = 1;
const end = 3;
document.write("<br>Target(start insert) position at: ", target);
document.write("<br>Start copying position at: ", start);
document.write("<br>End(stop copying) position at: ", end);
T_array.copyWithin(target, start, end);
document.write("<br>Modified TypedArray: ", T_array);
</script>
</body>
</html>
输出
执行上述程序后,返回一个修改后的类型数组,即 [1,2,3,0,2,3,0,0]。
Original TypedArray: 1,2,3,0,0,0,0,0 Target(start insert) position at: 4 Start copying position at: 1 End(stop copying) position at: 3 Modified TypedArray: 1,2,3,0,2,3,0,0
示例 3
如果目标参数值为负数 (-1),则将元素插入此 TypedArray [1, 2, 3, 4, 5, 6, 7, 8] 的末尾。
<html>
<head>
<title>JavaScript TypedArray copyWithin() Method</title>
</head>
<body>
<script>
const T_array = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
document.write("Original TypedArray: ", T_array);
const target = -1;
const start = 1;
const end = 3;
document.write("<br>Target(start insert) position at: ", target);
document.write("<br>Start copying position at: ", start);
document.write("<br>End(stop copying) position at: ", end);
T_array.copyWithin(target, start, end);
document.write("<br>Modified TypedArray: ", T_array);
</script>
</body>
</html>
输出
上述程序执行后,将返回修改后的 TypedArray,如下所示:
Original TypedArray: 1,2,3,4,5,6,7,8 Target(start insert) position at: -1 Start copying position at: 1 End(stop copying) position at: 3 Modified TypedArray: 1,2,3,4,5,6,7,2

