使用哪种方法从JavaScript数组中删除元素

使用哪种方法从JavaScript数组中删除元素

我们可以使用这两种方法来从javascript数组中删除一个元素。答案完全取决于应用和程序员。

slice()方法是做什么的?

正如名字所示,slice方法切割一个数组并返回新数组的副本。这个方法不会影响主数组,只是返回数组的副本。我们可以将这个副本传递给主数组或其他任何数组以获得切割后的数组。

语法:

array.slice(arg1, arg2); 
JavaScript

参数: 它接受以下两个参数:

  • arg1: 它是指方法开始切片的起始索引,起始索引是包含的,这意味着如果我们给定0,它将从第0个索引开始。
  • arg2: 它是指结束索引,此结束索引是排除的,这意味着在切片中不包括给定索引。

不必同时提供两个参数,如果我们不提供起始索引,它将从第0个索引开始;如果我们不提供结束索引,它将一直到最后一个索引。

返回值: 它返回一个新数组的副本。

示例1: 在这里,我们将起始索引设置为2,结束索引设置为4,因此它将切片出元素2和3。正如您所见,它返回了新数组的副本,并将其存储在同一个数组中。此方法还缩短了数组的长度。原先数组的长度为4,切片后,长度变为2。

Javascript

<script>
    // Sample array
    var arr = ["super", "duper", "upar", "chopper"];
 
    // Printing array length before function call
    console.log(arr.length);
 
    // Function call
    arr = arr.slice(2, 4);
 
    // Printing array and its length
    // after function call
    console.log(arr, arr.length);
</script>
JavaScript

输出:

4
[ 'upar', 'chopper' ] 2
JavaScript

示例2: 在这里,我们没有给出结束索引,因此它将从第一个索引开始切片,并切片到最后。

Javascript

<script>
    // Sample array
    var arr = ["super", "duper", "upar", "chopper"];
 
    // Printing length before function call
    console.log(arr.length);
 
    // Function call
    arr = arr.slice(1);
 
    // Printing array and its length
    // after function call
    console.log(arr, arr.length);
</script>
JavaScript

输出:

4
[ 'duper', 'upar', 'chopper' ] 3
JavaScript

delete()方法是做什么的?

delete更像是一个运算符而不是方法。它用于从对象中删除属性,也可以从数组中删除数据。但它并不完全删除引用,这意味着它不会缩短数组。delete运算符需要引用来删除该引用中的属性。

示例1: 如我们所见,我们给delete运算符一个需要删除的引用arr[1]。但它只删除了它所占有的属性,引用仍然存在,长度仍然是4,它并没有缩短我们的数组。

Javascript

<script>
    // Sample array
    var arr = ["super", "duper", "upar", "chopper"];
 
    // Printing array length before delete call
    console.log(arr.length);
 
    // Deleting
    delete arr[1];
 
    // Printing array and its length
    // after delete call
    console.log(arr, arr.length);
</script>
JavaScript

输出:

4
[ 'super', <1 empty item>, 'upar', 'chopper' ] 4
JavaScript

示例 2: 在第二个示例中,arr[2] 的引用仍然存在,只是它的值被移除了,因此显示为 undefined。当没有对 arr 的引用时,这些被删除的内存会自动释放。

JavaScript

<script>
    // Sample array
    var arr = ["super", "duper", "upar", "chopper"];
 
    // Printing array length before delete call
    console.log(arr.length);
 
    // Deleting
    delete arr[2];
 
    // Printing array reference
    console.log("The reference arr[2] is still there :", arr[2]);
 
    // Printing array length after delete call
    console.log(arr, arr.length);
</script>
JavaScript

输出:

4
The reference arr[2] is still there : undefined
[ 'super', 'duper', <1 empty item>, 'chopper' ] 4
JavaScript

结论: 如果我们想要缩短数组的长度,我们将使用slice方法;如果出于某些原因我们希望保持数组长度不变,我们将使用delete运算符。

参考资料:

  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete
  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册