jquery、アンダースコア、またはネイティブjavaScriptを使用して、要素を削除または配列に追加したいと思います。
これが私のコードです。
var a = ['4', '5'];
var remove = false/true;
if(!remove) {
a.push('6'); // it works
} else {
a.remove(5); // I have no idea how to perform this in a very dry way
}
jquery、アンダースコア、またはネイティブjavaScriptを使用して、要素を削除または配列に追加したいと思います。
これが私のコードです。
var a = ['4', '5'];
var remove = false/true;
if(!remove) {
a.push('6'); // it works
} else {
a.remove(5); // I have no idea how to perform this in a very dry way
}
ネイティブJavaScript:
a.splice(1, 1); // ['5']
a // ['4']
値を新しい要素に置き換えることができます。
var a = [1, 2, 3];
a.splice(1, 1, -1, -2) // [2]
a // [1, -1, -2, 3]
MDNドキュメントを参照してください
NULLとdystroyの答えを組み合わせると、純粋なjsでNikoの答え(ish)を取得できます。
a.splice(a.indexOf('5'),1);
または、複数の「5」を削除したい場合
var p;
while( (p = a.indexOf('5')) != -1 ){
a.splice(p, 1);
}
きちんとした方法は、かなり最適ではなく、最新のブラウザのみがサポートされています(また、新しい配列も作成されます)が、それでも有効で柔軟性があります。
a = a.filter(function(v){
return v != '5';
});
使用する
delete a[1];
また
delete a[a.indexOf('5')];
また
a.splice(a.indexOf('5'), 1);
undefined配列にを入れたくない場合。
IE8との互換性のために、indexOfの共通パッチを追加することをお勧めします
使用splice()方法:
if(typeof Array.prototype.remove === "undefined") {
Array.prototype.remove = function(e) {
this.splice(this.indexOf(e), 1);
}
}
var a = ['4', '5'];
a.remove('5');
alert(a);
プリント:
4