ホームページ  >  記事  >  ウェブフロントエンド  >  jsで配列を削除するいくつかの方法のまとめ

jsで配列を削除するいくつかの方法のまとめ

高洛峰
高洛峰オリジナル
2017-01-20 10:57:17965ブラウズ

var arr=['a','b','c'];
「b」を削除するには、次の 2 つの方法があります:

1.delete メソッド: delete arr[1]

この方法このとき、arr[1] は未定義になりますが、この時点で配列要素を走査したい場合は、この走査を使用できるという利点もあります。未定義の要素をスキップするメソッド

* このメソッドは IE4.o 以降でサポートされています

2. 配列オブジェクトの結合メソッド: arr.splice(1,1);

このように、配列の長さがそれに応じて変化します。ただし、元の配列のインデックスもそれに応じて変更されます

splice パラメータの最初の 1 は削除の開始インデックス (0 から数えます) で、ここでは配列の 2 番目の要素です

2 番目の 1 は削除する要素の数です、ここでは 1 つの要素のみが削除されています。それは 'b' です。

この時点では、削除された要素は配列に保持されないため、for などの配列を走査する通常の方法で配列要素を走査できます

* このメソッドは IE5.5 以降でのみサポートされます

言及する価値があります。splice メソッドは、配列要素を削除しながら新しい配列要素を追加することもできます

例: arr.splice(1,1,'d','e' )、2 つの要素 d と e が配列 arr

に追加されます

結果の配列は arr:'a','d','e','c' になります

JavaScript は、配列の長さを短縮する唯一の方法は、delete 演算子を使用して配列内の要素を削除する場合、その要素は未定義になりますが、配列の長さプロパティは 2 つの削除方法を変更しません。

for(index in arr)
{
 document.write('arr['+index+']='+arr[index]);
}
  /*
  * 方法:Array.remove(dx)
  * 功能:删除数组元素.
  * 参数:dx删除元素的下标.
  * 返回:在原数组上修改数组
  */
 //经常用的是通过遍历,重构数组.
Array.prototype.remove=function(dx)
 {
  if(isNaN(dx)||dx>this.length){return false;}
  for(var i=0,n=0;i<this.length;i++)
  {
    if(this[i]!=this[dx])
    {
      this[n++]=this[i]
    }
  }
  this.length-=1
 }
 a = [&#39;1&#39;,&#39;2&#39;,&#39;3&#39;,&#39;4&#39;,&#39;5&#39;];
 alert("elements: "+a+"nLength: "+a.length);
 a.remove(0); //删除下标为0的元素
 alert("elements: "+a+"nLength: "+a.length);

IE5 以前のバージョンでは、JavaScript の Array オブジェクトには配列要素を削除するための既製のメソッドが提供されていないことがわかっています。 IE5.5以降のバージョンでは、spliceメソッドはありますが、特定の項目(または複数の項目)を削除するのではなく、特定の項目(または複数の項目)の値をクリアするだけです。つまり、項目はまだ残っています。が存在する場合、配列の長さは変更されていません。


実際、配列に delete メソッドを自分で追加することもできます (これは実際に配列メンバーから配列の項目を削除することを指すことに注意してください)。おそらく、ループを使用して配列を再割り当てすることを考えるでしょう。これは確かに可能ですが、非常に非効率的です。

以下では、Array オブジェクトのスライスとコンキャットの 2 つのメソッドを使用して、配列の削除をカスタマイズする方法を紹介します。

具体的なコードは次のとおりです。内部のコメントに注意してください。

/*
  * 方法:Array.baoremove(dx)
  * 功能:删除数组元素.
  * 参数:dx删除元素的下标.
  * 返回:在原数组上修改数组.
  */
  
 //我们也可以用splice来实现.
  
 Array.prototype.baoremove = function(dx)
 {
  if(isNaN(dx)||dx>this.length){return false;}
  this.splice(dx,1);
 }
 b = [&#39;1&#39;,&#39;2&#39;,&#39;3&#39;,&#39;4&#39;,&#39;5&#39;];
 alert("elements: "+b+"nLength: "+b.length);
 b.baoremove(1); //删除下标为1的元素
 alert("elements: "+b+"nLength: "+b.length);

このように、Array オブジェクトの 2 つのメソッドのみを使用して要件を達成します。

配列を削除するいくつかの方法の詳細な js の概要については、PHP 中国語 Web サイトの関連記事に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。