var arr = ['a'、 'b'、 'c'];
「b」を削除するには、2つの方法があります。
1. deleteメソッド:arrを削除[1]
このように、この時点では、アレイの長さは未定義になりますが、アレイのインデックスが変更されていないこともあります。使用
for(arr in arr){document.write( 'arr ['+index+'] ='+arr [index]);}このトラバーサル法は、未定義の要素をスキップします
*この方法は、IE4.Oでサポートされます。
2。配列オブジェクトスプライス法:arr.splice(1,1);
このようにして、アレイの長さはそれに応じて変更されますが、元の配列インデックスもそれに応じて変更されます
スプライスパラメーターの最初の1は、配列の2番目の要素である削除の開始インデックス(0から計算)です。
2番目の1は、削除された要素の数であり、ここで削除された要素、つまり「b」です。
現時点では、削除された要素が配列に保持されていないため、forなどの通常の方法で配列要素を通過することが可能です。
*この方法は、IE5.5の後にのみサポートされます
配列要素を削除している間、スプライス法も配列要素を追加できることに言及する価値があります。
たとえば、arr.splice(1,1、 'd'、 'e')、d、およびeが配列arrに追加されます
結果配列はarr: 'a'、 'd'、 'e'、 'c'になります
JavaScriptアレイの長さ属性を設定して配列を切り捨てることは、配列の長さを使用して配列の要素を削除する場合、その要素は未定義になりますが、配列の長さ属性になります。要素を削除し、配列の長さを変更する方法は2回変更しません。
/ * * array.Remove(dx) * dreate array要素:dx要素の削除:元のアレイの配列を変更します。 .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 = ['1'、 '2'、 '3'、 '4'、 '5']; +a.length); / * * array.baoremove(dx) * dreate array要素:delete reterment:nower on ofering arrayも使用できます。 array .prototype.baoremove = function(dx){if(isnan(dx)|| dx> this.length){return false;} this.splice(dx、1 '、' 2 '; 、 '3'、 '4、' 5 ']; "要素:"+b+"nlength:"+b.length);IE5以下では、JavaScriptの配列オブジェクトが配列要素を削除する既製の方法を提供しないことを知っています。 IE5.5+バージョンでは、スプライスメソッドはありますが、特定のアイテム(または複数のアイテム)を削除するのではなく、特定のアイテム(または複数のアイテム)の値のみをクリアします。つまり、アイテムはまだ存在します。 、配列の長さは変更されていません。
実際、配列に削除メソッドを追加できます(これは、配列メンバーから配列のアイテムを削除することを指します)。ループを使用して配列を再割り当てすることを考えるかもしれませんが、それは確かに問題ありませんが、それは非効率的です。
以下に、スライスとconcatの2つの方法を紹介して、配列の削除をカスタマイズします。
特定のコードは次のとおりです。内部のコメントに注意してください。
array.prototype.del = function(n){// nは、0から始まるその用語を表します。 //プロトタイプはオブジェクトのプロトタイプであり、ここでオブジェクトにカスタムメソッドを追加する方法に注意してください。 if(n <0)// n <0の場合、何も行われません。 これを返します。 これは、slice(0、n)/this.slice(n+1、this.length)で構成される新しい配列です。 スライス方法:2つのパラメーターを持つ配列のセグメントを返し、それぞれ開始位置と終了位置を指定します。 */} //自分でそれを増やすこの方法を試してください=新しい配列(0,1,2,3,4,5);アイテム4の。アラート(テスト);このようにして、配列オブジェクトの2つの方法を柔軟に使用して要件を達成します。