読者です 読者をやめる 読者になる 読者になる

javascriptでindexを指定して配列から値を削除する

indexを指定して配列から値を削除したい場合、pythonだとdelで書けます。あまりやる機会ないけど。

array = ['a', 'b', 'c', 'd', 'e']
del array[1]
print array
# => ['a', 'c', 'd', 'e']


array = ['a', 'b', 'c', 'd', 'e']
del array[1:3]
print array
# => ['a', 'd', 'e']

javascriptで同じ事やるならどんな感じかなと思って調べてたら、以下のエントリで紹介されている方法がよさそうでしたので試してみました。
John Resig - JavaScript Array Remove


以下のコードを実行しておきます。

// 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);
};
var array = ["a", "b", "c", "d", "e"]
array.remove(1)
# => 4
array
# => ["a", "c", "d", "e"]

var array = ["a", "b", "c", "d", "e"]
array.remove(1, 3)
# => 2
array
# => ["a", "e"]

戻り値としてはremove後の配列のlengthを返し、arrayは破壊的に変更されます。

引数を2つ渡したとき、toのほうのindexが削除対象になるかどうか、微妙にpythonのdelにスライスを渡したときと異なるので注意。


上記のエントリにはこの3行のremoveメソッドについて詳しい説明があります。
たった3行でいろいろなテクニックが使用されてて面白いです。
興味のある人はご一読を。