11
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

sliceやconcatを用いた配列のコピーについて

Posted at

忘れてしまいそうなのでメモしておく。

jsで配列のコピーの方法として、slice()やconcat()を使ってコピーする方法がある。

本来の用途としては、配列の連結(concat)や切り出し(slice)などだが挙動が以下のようになっているので、配列のコピーとしても使われている

  • 元の配列を変更はしない
  • 元の配列から取り出された要素のコピーを含むシャローコピー( 1 段階の深さのコピー)を返す

また配列の中にある値については

  • 文字列や数値は、新しくコピー。元の配列に影響なし。
  • オブジェクトは参照をコピー。元の配列に影響あり。

となっているよう。

sample
var object = {
  a: 1,
  b: 2,
};

var arr1 = ["A", "B", object];

var arrCopy = arr1.slice();

arrCopy[1] = "C";

arrCopy[2].a = 3;

console.log(arr1);
// => [ 'A', 'B', { a: 3, b: 2 } ]

console.log(arrCopy);
// => [ 'A', 'C', { a: 3, b: 2 } ]
11
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?