投稿者 tel | 2012年3月10日

JavaScriptで配列をコピーする(ただし浅いコピー)

JavaScriptでは配列の変数を別の変数に代入してもコピーはされず参照をもつだけ。

var a = [1, 2, 3, 4],
    b = a;
console.log(a); // [1, 2, 3, 4]
console.log(b); // [1, 2, 3, 4]
// bを書き換えると...
b[0] = 100;
// aも書き換わる
console.log(a); // [100, 2, 3, 4]
console.log(b); // [100, 2, 3, 4];

なのでちょっと工夫が必要。考えられそうな手段を挙げてみる。

  • for文でまわす。
  • slice(0)を使う。
  • concat()を使う。
  • いったんJSONにしてしまう。(深いコピーができる)
  • Array.apply()を使う。

slice(0)が一番タイプ量が少ない。速度はどれが速いのかな。

実際のコード

http://jsdo.it/sapphire_al2o3/gRUl


コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中

カテゴリー

%d人のブロガーが「いいね」をつけました。