哪一种方法用于从 JavaScript 数组中删除元素(切片或删除)?
我们可以使用这两种方法从 javascript 数组中删除一个元素。答案完全取决于应用程序和程序员。
slice() 方法是做什么的?
顾名思义, slice 方法对数组进行切片并返回新数组的副本。此方法不影响主数组,它只是返回数组的副本。我们可以将此数组的副本提供给主数组或任何其他数组以获取切片数组。
句法:
array.slice(arg1, arg2);
参数:它接受以下两个参数:
- arg1:表示方法开始切片的起始索引,起始索引包含在内,这意味着如果我们给0,它将从第0个索引开始。
- arg2:结束索引。这个结束索引是独占的,这意味着它不会在切片中包含给定的索引
没有必要同时给出两个参数,如果我们不提供起始索引,它将从第 0 个索引开始,如果我们不提供结束索引,它将采用最后一个索引。
返回值:它返回新数组的副本
示例 1:在这里,我们将起始索引指定为 2,结束索引指定为 4,因此它将对元素 2、3 进行切片。如您所见,它返回新数组的副本,我们将其存储在同一个数组中.这种方法还缩短了数组长度。以前数组的长度为 4,切片后变为 2。
Javascript
Javascript
Javascript
Javascript
输出:
4
[ 'upar', 'chopper' ] 2
示例 2:这里我们没有给出结束索引,因此它将从第一个索引开始并切片直到最后。
Javascript
输出:
4
[ 'duper', 'upar', 'chopper' ] 3
delete() 方法有什么作用?
delete 更像是一个运算符而不是方法。它用于从对象中删除属性,也可以从数组中删除数据。但它不会完全删除引用,这意味着它不会缩短数组。删除运算符需要引用才能从该引用中删除属性。
示例 1:如我们所见,我们为删除运算符提供了要删除的引用 arr[1]。但它只会删除它所持有的财产。引用仍然存在,长度仍然是 4,它没有缩短我们的数组。
Javascript
输出:
4
[ 'super', <1 empty item>, 'upar', 'chopper' ] 4
示例 2:在第二个示例中。 arr[2] 引用仍然存在,只是它的值被删除,因此显示未定义,当没有对 arr 的引用时,这些删除的内存将自动释放。
Javascript
输出:
4
The reference arr[2] is still there : undefined
[ 'super', 'duper', <1 empty item>, 'chopper' ] 4
结论:如果我们想缩短数组的长度,我们将使用切片方法,如果出于某种原因我们想保持数组长度相同,我们将使用删除运算符。
参考:
- 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