2011-12-09 56 views
0

配列がありますtreeids = ['a','b','c','d']; 'b'要素を削除します。私たちはできるインデックスを使用して、これらの値が動的にこの配列に来るので、私はインデックスを使用してこれをしたい。 名前だけで削除してください。 IE7ブラウザでサポートする必要があります。 これを行う方法。配列から特定の要素を削除する方法

おかげ

+1

http://briancray.com/2009/09/30/remove-value-javascript-array/ – panupan

+0

最初のインスタンスのみ、またはその要素のすべてのインスタンスを削除しますか? – Jon

+0

@Jon要素のすべてのインスタンス – Mihir

答えて

3

はJavaScript 1.6は、あなたのニーズが上のスポット合うかArray.filter、用意されています。

もちろん、下部のブラウザサポートテーブルからもわかるように、IE 9より古いIEをサポートする必要がある場合は、運が不足しています。

jQueryは、同じことを行うが、別のライブラリのオーバーヘッドを導入するjQuery.grepを提供しています。

Underscore.jsには_.filterがありますが、これは別のライブラリを1つの目的にのみ使用することになります。

+0

しかし、OPの質問にIE 7で使用可能ですか? – Jon

+0

@ジョン:いいえ、そうではありません。 –

+0

@Nikc ... jquery.grepで同じことをする方法? – Mihir

0

これは、すべての「Bさんを削除します。

Array.prototype.remove= function(item){ 
    var L= this.length, indexed; 
    while(L){ 
     indexed= this[--L]; 
     if(indexed=== itm) this.splice(L, 1); 
    } 
    return this; 
} 

スプライスは、IE7(6)で利用可能です。 2番目の引数で渡された項目の数が、最初の引数で指定されたインデックスから始まります。

+1

これには説明が必要です。 – Jon

2

次のことを試してください。

treeids.splice(treeids.indexOf('b'), 1); 

今treeidsが残っているが含まれています...ここで'b'は削除される要素でした。 indexOfの引数は変数から来る可能性があります。さらに、エラーをチェックする必要があります。インデックスは-1であってはなりません。

関連する問題