在 JavaScript 中删除数组元素 - delete 与 splice 的区别

23 浏览
0 Comments

在 JavaScript 中删除数组元素 - delete 与 splice 的区别

在数组元素中使用delete运算符和使用Array.splice方法之间有什么区别?

例如:

myArray = ['a', 'b', 'c', 'd'];
delete myArray[1];
//  or
myArray.splice (1, 1);

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

admin 更改状态以发布 2023年5月21日
0
0 Comments

Array.remove() 方法

jQuery 的创始人 John Resig 创建了一个非常方便的 Array.remove 方法,我在我的项目中总是使用它。

// Array Remove - By John Resig (MIT Licensed)
Array.prototype.remove = function(from, to) {
  var rest = this.slice((to || from) + 1 || this.length);
  this.length = from < 0 ? this.length + from : from;
  return this.push.apply(this, rest);
};

下面是一些它如何使用的示例:

// Remove the second item from the array
array.remove(1);
// Remove the second-to-last item from the array
array.remove(-2);
// Remove the second and third items from the array
array.remove(1,2);
// Remove the last and second-to-last items from the array
array.remove(-2,-1);

John 的网站

0
0 Comments

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

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

请注意,实际上它并没有设置为值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"]

0