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

js_javascript スキルで配列を削除するいくつかの方法のまとめ

WBOY
WBOYオリジナル
2016-05-16 16:58:501127ブラウズ

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

1.削除メソッド: arr[1] を削除

このとき、arr[1]は配列の長さは変化しませんが、元の配列のインデックスは変化しないという利点もあります。 🎜>

コードをコピーします コードは次のとおりです:
(index in arr)
{
document.write('arr [' Index ']=' arr[index]);
}


この走査メソッドは未定義の要素をスキップします

* この方法は 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 は、配列の長さプロパティを設定することによって配列を切り詰めます。配列の長さを短縮する唯一の方法は、配列内の要素を削除するために削除演算子を使用することです。ただし、その要素は未定義になります。


/*
*メソッド: Array.remove(dx)
* 関数: 配列要素を削除します。
* パラメータ: 削除された要素の dx 添字。
*戻り値: 元の配列
*/
の配列を変更します。
//トラバーサルによる配列の再構築によく使用されます。

Array.prototype.remove=function(dx)

{

if(isNaN(dx)||dx>this.length){return false;}
for(var i=0,n =0;i {
if(this[i]!=this[dx])
{
this[n ]=this[i]
}
}
this.length-=1
}
a = ['1','2','3','4','5'];
alert( "elements: " a "nLength: " a.length);
a.remove(0); //インデックス 0 の要素を削除します
alert("elements: " a "nLength: " a.length ; > *メソッド: Array.baoremove(dx)
* 関数: 配列要素を削除します。
* パラメーター: 削除された要素の dx 添字。
* 戻り値: 元の配列の配列を変更します。

* /
//splice を使って実装することもできます。 Array.prototype.baoremove = function(dx) { if(isNaN(dx)||dx> this .length){return false;} this.splice(dx,1);}
b = ['1','2','3','4','5' ] ;
alert("elements: " b "nLength: " b.length);
b.baoremove(1) //添字 1 の要素を削除
alert("elements: " b "; nLength: " b.length);


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

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

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

具体的なコードは以下の通りです。中のコメントに注目してください。




コードをコピー


コードは次のとおりです:

Array.prototype.del=function(n) { //n は 0 から始まる番号を表します。
//Prototype はオブジェクトのプロトタイプです。ここでカスタム メソッドをオブジェクトに追加する方法に注意してください。
if(n return this;
else
return this.slice(0,n).concat(this.slice(n 1,this.length)); 2 つ以上の配列で構成される新しい配列。
これは、 this.slice(0,n)/this.slice(n 1,this.length)
を返すことで構成される新しい配列です。
Slice メソッド: 開始位置と終了位置をそれぞれ指定する 2 つのパラメーターを使用して、配列のセグメントを返します。
*/
}
//この追加方法を自分で試してみましょう
var test=new Array(0,1,2,3,4,5);
test =test .del(3); //0から数えて4番目の項目をここで削除します。
alert(test);


このように、要件を達成するために Array オブジェクトの 2 つのメソッドのみを使用します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。