JavaScriptの配列から特定の要素を削除するにはどうすればいいの? [Javascript]

このエントリーをはてなブックマークに追加

質問:

整数の配列があって、要素を追加するために`.push()``メソッドを使用してるとする。

ここで、配列から特定の要素を削除する簡単な方法ってある? array.remove(int);みたいな感じの。

ただし、JavaScript のみ を使用するとして。フレームワークは使えないんだ。

By Walker | 質問日時: 2011年4月23日 22:17



回答1:

まず、削除したい要素の indexを見つけよう:

var array = [2, 5, 9];
var index = array.indexOf(5);

_注:indexOfのブラウザサポートは限られてる。Internet Explorer 7および8ではサポートされてないよ。

次に、spliceで削除する:

if (index > -1) {
array.splice(index, 1);
}

spliceの2番目のパラメータは削除する要素の数。spliceは配列の場所を変えて、削除された要素を含む新しい配列を返す。


サポートされていないブラウザで indexOfが必要な場合は、以下のpolyfillを試してみて。詳しくはここのpolyfillを参照。

Array.prototype.indexOf || (Array.prototype.indexOf = function(d, e) {
var a;
if (null == this) throw new TypeError('"これ" はNULLまたは定義されていない');
var c = Object(this),
b = c.length >>> 0;
if (0 === b) return -1;
a = +e || 0;
Infinity === Math.abs(a) && (a = 0);
if (a >= b) return -1;
for (a = Math.max(0 <= a ? a : b - Math.abs(a), 0); a < b;) {
if (a in c && c[a] === d) return a;
a++
}
return -1
});

By Tom Wadley | 回答日時: 2011年4月23日 22:23



回答2:

array.remove(int)がどのように動作することを期待しているのか分からないけど、あなたが欲しいかもと思う答えは3つの可能性があるかな:

インデックスがiである配列の要素を削除するには:

array.splice(i, 1);

numberを持つすべての要素を配列から削除する場合は、次のようにします。

for(var i = array.length - 1; i >= 0; i--) {
if(array[i] === number) {
array.splice(i, 1);
}
}

インデックスのある要素iを削除したくて、でも他の要素のインデックスを変更したくないのなら、

delete array[i];

By Peter Olson | 回答日時: 2011年4月23日 22:20





Source: How do I remove a particular element from an array in JavaScript?

共有 コメント