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
广告

© . All rights reserved.