JavaScript - TypedArray copyWithin() 方法



JavaScript TypedArray 的 copyWithin() 方法將 TypedArray 內的元素複製到另一個位置,並返回修改後的 TypedArray,而不會改變其原始長度。它接受三個引數,其中一個名為目標。

如果target引數值為負數,它將從 TypedArray 的末尾開始插入元素。例如,如果target = -1,則值將插入到當前 TypedArray 的末尾

在 JavaScript 中,TypedArray 是類似陣列的物件,提供了一種在記憶體緩衝區中讀取和寫入原始二進位制資料的機制。

語法

以下是 JavaScript TypedArray copyWithin() 方法的語法:

copyWithin(target, start, end)

引數

此方法接受三個名為“target”、“start”和“end”的引數,如下所述:

  • target - 元素開始插入的基於零的索引(位置)。

  • start - 元素開始複製的基於零的索引。

  • end (可選) - 停止複製元素的基於零的索引。該方法最多複製到 end,但不包括 end 本身。

返回值

此方法返回修改後的 TypedArray,而不會更改原始 TypedArray 的長度。

示例

示例 1

如果我們只將targetstart引數傳遞給此方法,它將從指定的 target 位置(為3)開始插入元素,並從原始 TypedArray 中指定的 start 位置(為0)開始複製元素,直到複製的元素長度等於原始 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>

輸出

上述程式返回修改後的 TypedArray:[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)傳遞給此方法,它將從指定的 target 位置(為4)開始插入元素,並從原始 TypedArray 中指定的 start 位置(為1)開始複製元素,直到但不包括指定的 end 位置(為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>

輸出

執行上述程式後,它將返回修改後的 TypedArray:[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

如果 target 引數值為負數(-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
廣告