一尘不染

在JavaScript中删除数组元素-Delete与Splice

javascript

是什么使用之间的差值的delete算子阵列元件上,而不是使用该Array.splice方法?

例如:

myArray = ['a', 'b', 'c', 'd'];

delete myArray[1];
//  or
myArray.splice (1, 1);

如果我可以像删除对象一样删除数组元素,为什么还要使用splice方法呢?


阅读 275

收藏
2020-04-23

共1个答案

一尘不染

delete将删除对象属性,但不会为数组重新索引或更新其长度。这使得它看起来好像是未定义的:

> myArray = ['a', 'b', 'c', 'd']
  ["a", "b", "c", "d"]
> delete myArray[0]
  true
> myArray[0]
  undefined

请注意,实际上并没有将其设置为value undefined,而是从数组中删除了该属性,使其 显得
未定义。Chrome开发人员工具通过empty在记录阵列时进行打印来明确区分这一点。

> myArray[0]
  undefined
> myArray
  [empty, "b", "c", "d"]

myArray.splice(start,deleteCount)实际上会删除元素,为数组重新索引,并更改其长度。

> myArray = ['a', 'b', 'c', 'd']
  ["a", "b", "c", "d"]
> myArray.splice(0, 2)
  ["a", "b"]
> myArray
  ["c", "d"]
2020-04-23