使用哪种方法从JavaScript数组中删除元素
我们可以使用这两种方法来从javascript数组中删除一个元素。答案完全取决于应用和程序员。
slice()方法是做什么的?
正如名字所示,slice方法切割一个数组并返回新数组的副本。这个方法不会影响主数组,只是返回数组的副本。我们可以将这个副本传递给主数组或其他任何数组以获得切割后的数组。
语法:
参数: 它接受以下两个参数:
- arg1: 它是指方法开始切片的起始索引,起始索引是包含的,这意味着如果我们给定0,它将从第0个索引开始。
- arg2: 它是指结束索引,此结束索引是排除的,这意味着在切片中不包括给定索引。
不必同时提供两个参数,如果我们不提供起始索引,它将从第0个索引开始;如果我们不提供结束索引,它将一直到最后一个索引。
返回值: 它返回一个新数组的副本。
示例1: 在这里,我们将起始索引设置为2,结束索引设置为4,因此它将切片出元素2和3。正如您所见,它返回了新数组的副本,并将其存储在同一个数组中。此方法还缩短了数组的长度。原先数组的长度为4,切片后,长度变为2。
Javascript
输出:
示例2: 在这里,我们没有给出结束索引,因此它将从第一个索引开始切片,并切片到最后。
Javascript
输出:
delete()方法是做什么的?
delete更像是一个运算符而不是方法。它用于从对象中删除属性,也可以从数组中删除数据。但它并不完全删除引用,这意味着它不会缩短数组。delete运算符需要引用来删除该引用中的属性。
示例1: 如我们所见,我们给delete运算符一个需要删除的引用arr[1]。但它只删除了它所占有的属性,引用仍然存在,长度仍然是4,它并没有缩短我们的数组。
Javascript
输出:
示例 2: 在第二个示例中,arr[2] 的引用仍然存在,只是它的值被移除了,因此显示为 undefined。当没有对 arr 的引用时,这些被删除的内存会自动释放。
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