为了账号安全,请及时绑定邮箱和手机立即绑定

删除JavaScript中的数组元素-删除VS拼接

删除JavaScript中的数组元素-删除VS拼接

慕桂英3389331 2019-05-31 16:47:03
删除JavaScript中的数组元素-删除VS拼接使用这个delete操作者在数组元素上,而不是使用这个Array.splice方法?例如:myArray = ['a', 'b', 'c', 'd'];delete myArray[1];//  ormyArray.splice (1, 1);如果我可以像删除对象一样删除数组元素,那么为什么还要使用Splice方法呢?
查看完整描述

4 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

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

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

注意,它实际上没有设置为undefined,而是将属性从数组中移除,使其成为出现没有定义。Chrome dev工具通过打印明确了这一区别。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"]


查看完整回答
反对 回复 2019-05-31
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

Array.emove()方法

约翰·雷西格,jQuery的创建者创建了一个非常方便的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 arrayarray.remove(1);// Remove the second-to-last item from the arrayarray.remove(-2);
// Remove the second and third items from the arrayarray.remove(1,2);
// Remove the last and second-to-last items from the arrayarray.remove(-2,-1);

约翰网站


查看完整回答
反对 回复 2019-05-31
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

因为DELETE只从数组中的元素中删除对象,所以数组的长度不会改变。Splice移除对象并缩短数组。

下面的代码将显示“a”、“b”、“未定义”、“d”

myArray = ['a', 'b', 'c', 'd']; delete myArray[2];for (var count = 0; count < myArray.length; count++) {
    alert(myArray[count]);}

而这将显示“a”、“b”、“d”

myArray = ['a', 'b', 'c', 'd']; myArray.splice(2,1);for (var count = 0; count < myArray.length; count++) {
    alert(myArray[count]);}


查看完整回答
反对 回复 2019-05-31
?
温温酱

TA贡献1752条经验 获得超4个赞

我无意中发现了这个问题,同时试图理解如何从Array中删除每个元素的出现。下面是一个比较splicedelete为了移除每一个'c'items阵列。

var items = ['a', 'b', 'c', 'd', 'a', 'b', 'c', 'd'];while (items.indexOf('c') !== -1) {
  items.splice(items.indexOf('c'), 1);}console.log(items);
   // ["a", "b", "d", "a", "b", "d"]items = ['a', 'b', 'c', 'd', 'a', 'b', 'c', 'd'];while (items.indexOf('c') !== -1) {
  delete items[items.indexOf('c')];}console.log(items); // ["a", "b", undefined, "d", "a", "b", undefined, "d"]


查看完整回答
反对 回复 2019-05-31
  • 4 回答
  • 0 关注
  • 669 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信