2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【JavaScript】配列を別の配列に代入して値を上書きすると元の配列まで書き換わる

2
Last updated at Posted at 2026-08-30

はじめに

  • 私がディープコピーと勘違いしていた点を @honey32 様に教えて頂きました!ありがとうございます!! 参考
  • ディープコピーとシャローコピーについては、調べて理解して別の記事にまとめようと思います

問題

  • ary2だけ更新したつもりが、ary1[0]が999になる
const ary1 = [0, 1, 2];
const ary2 = ary1;
ary2[0] = 999;
console.log({ ary1 });
console.log({ ary2 });
// ary1[0]が999になる

解決

  • スプレッド構文を使う
const ary3 = [0, 1, 2];
const ary4 = [...ary3];
ary4[0] = 999;
console.log({ ary3 });
console.log({ ary4 });

終わりに

以下、修正前の記事内容です。

修正前の記事

【JavaScript】配列のディープコピーをしたい場合はスプレッド構文を使う

はじめに

  • スプレッド構文の復習

問題

  • ary2だけ更新したつもりが、ary1[0]が999になる
const ary1 = [0, 1, 2];
const ary2 = ary1;
ary2[0] = 999;
console.log({ ary1 });
console.log({ ary2 });
// ary1[0]が999になる

解決策

  • スプレッド構文を使いディープコピーすればary3[0]は0のまま
const ary3 = [0, 1, 2];
const ary4 = [...ary3];
ary4[0] = 999;
console.log({ ary3 });
console.log({ ary4 });

終わりに

ディープコピーとシャローコピーに関しては以下を参照

https://medium-company.com/%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%82%B3%E3%83%94%E3%83%BC%E3%81%A8%E3%82%B7%E3%83%A3%E3%83%AD%E3%83%BC%E3%82%B3%E3%83%94%E3%83%BC%E3%81%AE%E9%81%95%E3%81%84/

2
1
3

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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?