JavaScript - TypedArray set() 方法



JavaScript TypedArray 的set()方法用於透過從指定的源陣列讀取輸入值來將一個或多個值儲存到型別化陣列中。它返回無(undefined)

此外,它接受一個名為'targetOffset'的可選引數,該引數指定寫入開始的目標陣列中的位置。如果未指定,則從目標陣列的第 0個索引開始寫入。

注意 - 如果 targetOffset 引數值為負數或超過目標陣列長度,則會丟擲"RangeError"異常。

語法

以下是 JavaScript TypedArray set()方法的語法 -

set(typedarray, targetOffset) 

引數

此方法接受兩個名為“typedarray”和“targetOffset”的引數,如下所述 -

  • typedarray - 要從中複製值的源陣列。

  • targetOffset(可選) - 要開始寫入值的 target 陣列中的索引(或位置)。

返回值

此方法返回無(undefined)。

示例

示例 1

在以下程式中,我們使用 JavaScript TypedArray 的set()方法透過從指定的源陣列 [1, 2, 3, 4, 5, 6, 7, 8] 讀取輸入值來將多個值儲存到型別化陣列中。

<html>
<head>
   <title>JavaScript TypedArray set() Method</title>
</head>
<body>
   <script>
      const T_array = new Uint16Array([1, 2, 3, 4, 5, 6, 7, 8]);
      document.write("Typed array(target array): ", T_array);
      
      //using the set() method
      document.write("<br>The set() method returns: ", T_array.set([0, 0, 0]));
   </script>    
</body>
</html>

輸出

執行上述程式後,它將返回“undefined”。

Typed array(target array): 1,2,3,4,5,6,7,8
The set() method returns: undefined

示例 2

如果省略了targetOffset引數,則源陣列將從索引0開始覆蓋目標陣列中的值。

以下是 JavaScript TypedArray set()方法的另一個示例。我們使用此方法透過從指定的源陣列 [1, 2, 3] 讀取輸入值(從預設索引0開始)來將多個值儲存到此型別化陣列 [10, 20, 30, 40, 50] 中。

<html>
<head>
   <title>JavaScript TypedArray set() Method</title>
</head>
<body>
   <script>
      const T_array = new Uint16Array([10, 20, 30, 40, 50]);
      document.write("Typed array(target array): ", T_array);
      const source_arr = new Uint16Array([1, 2, 3]);
      document.write("<br>Source array: ", source_arr);
      
      //using the set() method
      T_array.set(source_arr);
      document.write("<br>Typed array after set: ", T_array);
   </script>    
</body>
</html>

輸出

上述程式返回一個型別化陣列,如 [1, 2, 3, 40, 50]。

Typed array(target array): 10,20,30,40,50
Source array: 1,2,3
Typed array after set: 1,2,3,40,50

示例 3

如果我們將targetOffset引數值傳遞為2,則它將從指定的源陣列中開始將值儲存到目標陣列中,從指定的 targetOffset 值開始。

在下面給出的示例中,我們使用 JavaScript TypedArray 的set()方法透過從指定的源陣列 [10,20,30] 讀取輸入值(從指定的索引2開始)來將多個值儲存到目標型別化陣列 [0,0,0,0,0,0,0,0] 中。

<html>
<head>
   <title>JavaScript TypedArray set() Method</title>
</head>
<body>
   <script>
      const T_array = new Uint16Array([0, 0, 0, 0, 0, 0, 0, 0]);
      document.write("Typed array(target array): ", T_array);
      const source_arr = new Uint16Array([10, 20, 30]);
      document.write("<br>Source array: ", source_arr);
      const targetOffset = 2;
      document.write("<br>The targetOffset: ", targetOffset);
      
      //using the set() method
      T_array.set(source_arr, targetOffset);
      document.write("<br>Typed array after set: ", T_array);
   </script>    
</body>
</html>

輸出

執行上述程式後,將顯示以下輸出:

Typed array(target array): 0,0,0,0,0,0,0,0
Source array: 10,20,30
The targetOffset: 2
Typed array after set: 0,0,10,20,30,0,0,0

示例 4

如果將targetOffset引數值傳遞為-2,由於它是一個負值,set()方法將丟擲“RangeError”異常。

<html>
<head>
   <title>JavaScript TypedArray set() Method</title>
</head>
<body>
   <script>
      const T_array = new Uint16Array([1, 3, 5, 7, 9]);
      document.write("Typed array(target array): ", T_array);
      const source_arr = new Uint16Array([10, 20, 30]);
      document.write("<br>Source array: ", source_arr);
      const targetOffset = -2;
      document.write("<br>The targetOffset: ", targetOffset);
      
      //using the set() method
      try {
         T_array.set(source_arr, targetOffset);
         document.write("<br>Typed array after set: ", T_array);
      } catch (error) {
         document.write("<br>", error);
      }
   </script>    
</body>
</html>

輸出

執行上述程式後,將丟擲“RangeError”異常。

Typed array(target array): 1,3,5,7,9
Source array: 10,20,30
The targetOffset: -2
RangeError: offset is out of bounds
廣告