2009-08-13 21 views
4

を取り除くI持って、次のアレイの設定、I、E:Javascriptの配列 - 配列の要素

var myArray = new Array(); 

ユーザーがより多くのメニュー項目が追加されますように私は動的にパンくずメニューを作成しています、この配列を使用します。また、特定のブレッドクラムメニュー項目を削除するには、ブレッドクラムメニュー項目の横にあるクロスをクリックしてください。

配列は、以下のデータを保持してもよい。

myArray[0] = 'MenuA'; 
myArray[1] = 'MenuB'; 
myArray[2] = 'MenuC'; 
myArray[3] = 'MenuD'; 
myArray[4] = 'MenuE'; 

私の質問は、次のとおり

A)JavaScriptでは、どのようにmyarrayの中から、[1]の要素を削除して、インデックスを再計算し、またはこれが不可能であることができ?

b)メニューオプションMenuBを使用したくない場合は、スプライスして削除する必要がありますか?

私の問題は、メニュー項目を削除して最後にニュースを作成すると、これらの要素のインデックスはどのように拡散されるのでしょうか?

私はアイテムを削除できますが、配列インデックスの処理方法はわかりません。

ありがとうございました。 トニー。

答えて

20

私はArray.removeのthis implementationが好きで、それは基本的にsplice機能の使用を抽象化:

// 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 array 
array.remove(1); 
// Remove the second-to-last item from the array 
array.remove(-2); 
// Remove the second and third items from the array 
array.remove(1,2); 
// Remove the last and second-to-last items from the array 
array.remove(-2,-1); 
+0

感謝のCMSと残りの人に返信しました。 – tonyf

+3

あなたはもっと私をexplianできますか?私は単純なスプライスネイティブメソッドを使用して配列から要素を削除するだけではどうしたらよいのでしょうか? –

+0

私はスプライスがむしろ自分のコードを書いて良いと思う。 – Rajkishore

27

myArray.push('MenuA');を使用すると、要素を追加するときに直接番号を指定しないでください。

元素I.Eを除去する。 'MenuB':

// another quick way to define an array 
myArray = ['MenuA', 'MenuB', 'MenuC', 'MenuD', 'MenuE']; 

// remove an item by value: 
myArray.splice(myArray.indexOf('MenuB'),1); 

// push a new one on 
myArray.push('MenuZ'); 

// myArray === ["MenuA", "MenuC", "MenuD", "MenuE", "MenuZ"] 
+3

indexOfはIEではサポートされていません。それはプロトタイプ化することができます - > http://stackoverflow.com/questions/1744310/how-to-fix-array-indexof-in-javascript-for-ie-browsers – vsync

+0

jQueryを使用する場合は、組み込みのindexOfを提供しています配列 - > http://api.jquery.com/jQuery.inArray/ – vsync

0

あなたがする必要はありません関数を書く場合は、これら2つの関数をindexOf()とsplice()を使用することができます。

任意の位置要素を削除できます。 例: var name = ['james'、 'tommy'、 'Jimmy'、 'Holon']; var name = name.splice(name.indexOf( 'Jimmy')、1);