JavaScriptの配列の要素を前後の要素と入れ替える

この前、JavaScriptの配列のある要素を一つ前(一つ後ろ)の要素と入れ替えたい、という状況になりました。

Arrayオブジェクトのメソッドにはそれらしきものはありませんでしたが、spliceというメソッドを使って実現できそうでした。
spliceメソッドについては、以下を参照してください。
http://www.tohoho-web.com/js/array.htm#splice

以下、実行例です。

var array = new Array("あ", "い", "う", "え", "お");

// 入れ替える文字のindex
var index;

// "う"を一つ前の"い"と入れ替え
index = 2;
array.splice(index-1, 2, array[index], array[index-1]);
alert(array); // => あ,う,い,え,お

// さらに"え"を一つ後ろの"お"と入れ替え
index = 3;
array.splice(index, 2, array[index+1], array[index]);
alert(array); // => あ,う,い,お,え

前後に移動させたい文字のindexを使って、spliceの引数の与え方を2パターン作成してみましたが、
メソッドの実行前にindexの値を変更すれば、どちらか一方で充分ですね。

以下、後者の引数の与え方で実行した例です。

var array = new Array("あ", "い", "う", "え", "お");

// 入れ替える文字のindex
var index;

// "う"を一つ前の"い"と入れ替え
index = 2 - 1; // 一つ前の要素と入れ替えなのでindexを前にずらす
array.splice(index, 2, array[index+1], array[index]);
alert(array); // => あ,う,い,え,お

// さらに"え"を一つ後ろの"お"と入れ替え
index = 3;
array.splice(index, 2, array[index+1], array[index]);
alert(array); // => あ,う,い,お,え
About these ads

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

フォロー

新しい投稿をメールで受信しましょう。