JavaScript - TypedArray slice() 方法



JavaScript TypedArray slice() 方法将原始类型化数组中提取的元素的副本返回到新的类型化数组对象中,该对象从开始索引到结束索引进行选择,但不包括结束索引。start 和 end 索引表示类型化数组中元素的位置。

此方法不会修改或更改原始类型化数组,但会返回包含提取元素的新类型化数组。如果我们为 start 参数传递负值,它将开始从类型化数组的 end 位置提取元素。例如,如果 start = −1,它将表示最后一个元素。

语法

以下是 JavaScript TypedArray slice() 方法的语法 -


 slice(start, end)

参数

此方法接受两个名为 'start' 和 'end' 的可选参数,如下所述 -

  • start (可选) − 元素开始提取的从零开始的索引。
  • end (可选) − 提取将停止的从零开始的索引(slice() 方法提取到该端,但不包括该端)。

返回值

此方法返回一个新的类型化数组,其中包含原始类型化数组的提取元素。

示例 1

如果我们同时省略 'start' 和 'end' 参数,则 slice() 方法开始从第 0 个索引中提取元素,并继续直到原始类型化数组的最后一个索引。

在下面的程序中,我们使用 JavaScript slice() 方法将原始类型化数组 [1, 2, 3, 4, 5, 6, 7, 8] 的一部分提取到一个新的类型化数组对象中。由于我们没有为此方法指定 start 和 end 参数,因此它会从原始数组中复制所有元素。


<html>
<head>
   <title>JavaScript TypedArray slice() Method</title>
</head>
<body>
   <script>
      const T_array = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
      document.write("Original TypedArray: ", T_array);
      
      //using the slice() method
      T_array.slice();
      document.write("<br>New TypedArray(after copying):", T_array);
   </script>    
</body>
</html>

输出

 

上面的程序返回一个新的 TypedArray,即 [1, 2, 3, 4, 5, 6, 7, 8]。

Original TypedArray: 1,2,3,4,5,6,7,8
New TypedArray(after copying):1,2,3,4,5,6,7,8

示例 2

如果我们只将 start 参数传递给此方法,它会从指定的起始位置提取元素并继续提取,直到原始类型化数组中的最后一个元素。

以下是 JavaScript TypedArray slice() 方法的另一个示例。在本例中,我们尝试从原始类型化数组 [10, 20, 30, 40, 50] 中提取元素,从指定的起始位置 2 开始,一直持续到最后一个元素。


<html>
<head>
   <title>JavaScript TypedArray slice() Method</title>
</head>
<body>
   <script>
      const T_array = new Uint8Array([10, 20, 30, 40, 50]);
      document.write("Original TypedArray: ", T_array);
      const start = 2;
      document.write("<br>Start(extracting position) value: ", start);
      
      //creating new empty typed array
      let new_t_array = new Uint8Array([]);
      
      //using the slice() method
      new_t_array = T_array.slice(start);
      document.write("<br>New TypedArray(after copying): ", new_t_array);
   </script>    
</body>
</html>

输出

执行上述程序后,它将新类型化的数组显示为 [30, 40, 50]。

Original TypedArray: 10,20,30,40,50
Start(extracting position) value: 2
New TypedArray(after copying): 30,40,50

示例 3

如果我们将 'start' 和 'end' 参数都传递给此方法,它会从指定的 'start' 位置开始提取元素,并继续提取到 'end' 位置,但不包括 'end' 位置。

在此示例中,我们使用 TypedArray slice() 方法从指定的起始位置 3 提取原始类型化数组 [20, 40, 60, 70, 90, 100, 120, 130] 的一部分的副本,直到指定的结束位置 6(不包括在内)。


<html>
<head>
   <title>JavaScript TypedArray slice() Method</title>
</head>
<body>
   <script>
      const T_array = new Uint8Array([20, 40, 60, 70, 90, 100, 120, 130]);
      document.write("Original TypedArray: ", T_array);
      const start = 3;
      const end = 6;
      document.write("<br>Start value: ", start);
      document.write("<br>End value: ", end);
      
      //creating new empty typed array
      let new_t_array = new Uint8Array([]);
      
      //using the slice() method
      new_t_array = T_array.slice(start, end);
      document.write("<br>New TypedArray(after copying): ", new_t_array);
   </script>    
</body>
</html>

输出

执行上述程序后,它将新的 TypedArray 显示为 -

Original TypedArray: 20,40,60,70,90,100,120,130
Start value: 3
End value: 6
New TypedArray(after copying): 70,90,100

示例 4

如果我们将 start 参数值作为 -2 传递给 slice() 方法,它将从类型化数组 [1, 2, 3, 4, 5] 中提取最后两个元素。


<html>
<head>
   <title>JavaScript TypedArray slice() Method</title>
</head>
<body>
   <script>
      const T_array = new Uint8Array([1, 2, 3, 4, 5]);
      document.write("Original TypedArray: ", T_array);
      const start = -2;
      document.write("<br>Start value: ", start);
      
      //creating new empty typed array
      let new_t_array = new Uint8Array([]);
      
      //using the slice() method
      new_t_array = T_array.slice(start);
      document.write("<br>New TypedArray(after copying): ", new_t_array);
   </script>    
</body>
</html>

输出

上面的程序返回一个新的类型化数组,如下所示:[4, 5]。

Original TypedArray: 1,2,3,4,5
Start value: -2
New TypedArray(after copying): 4,5