Help us understand the problem. What is going on with this article?

JavaScript における配列コピー

JavaScript における配列コピーの問題

JavaScript における配列( array )はオブジェクトのため参照コピーされる。
つまり、コピー先の配列を変更すると、コピー元の配列が変更されてしまうといった事象が発生する。
例えば次のようになる。

array = [1,2,3];
arrayCopy = array;
arrayCopy[0] = 4;
console.log(arrayCopy); // [4,2,3]
console.log(array); // [4,2,3] : コピー元の値も変更される

JavaScript における配列コピーの解決策

2020年11月現在ではいくつかの方法があるので代表的なものを紹介する。

slice()

速度が早い、と言われている。

array = [1,2,3];
arrayCopy = array.slice();

concat()

slice() 同様、速度が早い、と言われている。

array = [1,2,3];
arrayCopy = array.concat();

スプレッド構文( ES2015 )

最も直感的な記述だと思われる。

array = [1,2,3];
arrayCopy = [...array];

その他

for() や while() 、map() 、filter() 、reduce()、from() による方法あり。

参考

その他のアドカレ参加

drytt
React Lover
https://drytt.com
admin-guild
「Webサービスの運営に必要なあらゆる知見」を共有できる場として作られた、運営者のためのコミュニティです。
https://admin-guild.slack.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away