js中如何删除数组中的指定元素,js中数组删除指定元素

  js中如何删除数组中的指定元素,js中数组删除指定元素

  本教程运行环境:windows7系统,javascript1.8.5版本1.8.5,戴尔G3电脑。

  在JavaScript中,除了Object,数组类型(Array)可能是最常用的类型。与其他语言中的数组相比,JavaScript中的数组非常灵活。这种灵活性有利有弊。优点是有创意,可以提供各种灵活的解决方案。坏处是很容易用脑,因为其实太灵活了,灵活到无法控制。

  之前调侃了几句,还是回到正题吧。这里我想总结一下JavaScript中删除数组元素的七种方法,分别是使用length属性、delete关键字、pop () stack方法、shift () queue方法、splice()操作方法、forEach()或filter()迭代法和prototype方法。

  delete关键字

  JavaScript提供了delete关键字来删除(清除)数组元素。

  var colors=[红色,蓝色,灰色,绿色];删除颜色[0];

  console.log(颜色);//[undefined, blue , grey , green]需要注意的是,用delete删除元素后,数组长度不变,但删除的元素被设置为undefined。

  splice()操作方法

  在JavaScript的Array对象中,提供了splice()方法来对数组执行特定的操作。恐怕splice()是最厉害的数组方法了。它可以用在许多方面。这里只介绍删除数组元素的方法。删除数组元素时,可以删除任意数量的项,只需要指定两个参数:第一个要删除项的位置和要删除的项数。

  var colors=[红色,蓝色,灰色];var color=colors.splice(0,1);

  console.log(彩色);//redconsole.log(颜色);//[blue , grey]可以看到,调用splice(0,1)方法时,数组从第一项开始,删除一项。

  迭代方法

  所谓迭代法,就是循环迭代数组元素,删除符合删除要求的项。最常用的地方是,当数组中的元素是对象时,可以根据对象的一个属性(比如ID)删除数组元素。

  第一个使用最常见的ForEach循环来比较元素,并在找到元素后删除它们。

  var colors=[红色,蓝色,灰色];

  colors.forEach(function(item,index,arr) { if(item===red) {

  排列拼接(索引,1);

  }

  });可以看到,需要配合splice()方法进行删除,而循环只是寻找一个特定的元素。另一种思路是通过循环把不需要删除的元素推到一个新的数组中,也可以达到伪删除特定元素的目的。

  第二,我们在循环中使用过滤方法。

  var colors=[红色,蓝色,灰色];

  colors=colors . filter(function(item){ return item!= red });

  console.log(颜色);//[蓝色,灰色]代码非常简单。找出元素不是红色的项数,并将其返回到colors(实际上,你得到的是一个新数组,而不是在原数组上删除它)。在某种程度上,您可以删除特定的元素。

  prototype原型方法

  您可以通过向Array的原型添加方法来删除它。

  array . prototype . remove=function(dx){ if(isNaN(dx) dx this . length){

  返回false

  }

  for(var i=0,n=0;我这.长度;i ) {

  如果(这个[我]!=this[dx]){ this[n]=this[I];

  }

  } this . length-=1;

  };var colors=[红色,蓝色,灰色];

  colors . remove(1);

  console.log(颜色);//[red , grey]这个方法实际上是自己实现了一个删除逻辑,然后在Array的原型对象中加入了delete方法,所以这个环境中的所有Array对象都可以使用这个方法。虽然可以这样做,但不建议在生产程序中修改本机对象的原型。原因很简单。如果在一个实现中只缺少某个方法,并且这个方法被添加到本机对象的原型中,那么当代码在另一个支持这个方法的实现中运行时,可能会导致命名冲突。这样做可能会无意中导致本机方法被重写。

  【推荐学习:javascript高级教程】以上是javascript如何删除指定数组元素的细节。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: