ハッピーメモメモ

私的備忘録

【Javascript】配列の複製

concat

const ary1 = [1, 2, 3];
const ary2 = ary1.concat();

console.log(ary1); // => [ 1, 2, 3 ]
console.log(ary2); // => [ 1, 2, 3 ]

// ary2 の要素を変更する
ary2[0] = 4;
console.log(ary2); // => [ 4, 2, 3 ]

// ary1 は変更されない
console.log(ary1); // => [ 1, 2, 3 ]

 

slice

・「配列」とだけ指定すると、直接変更をかけてしまうが、「配列.slice()」と呼ぶことで、配列のコピーを作成できる!

 

const ary1 = [1, 2, 3];
const ary2 = ary1.slice(0, ary1.length);

console.log(ary1); // => [ 1, 2, 3 ]
console.log(ary2); // => [ 1, 2, 3 ]

// ary2 の要素を変更する
ary2[0] = 4;
console.log(ary2); // => [ 4, 2, 3 ]

// ary1 は変更されない
console.log(ary1); // => [ 1, 2, 3 ]

 

スプレッド構文

const ary1 = [1, 2, 3];
const ary2 = [...ary1]; →一度バラす(配列から出す)→再度配列に入れる

console.log(ary1); // => [ 1, 2, 3 ]
console.log(ary2); // => [ 1, 2, 3 ]

// ary2 の要素を変更する
ary2[0] = 4;
console.log(ary2); // => [ 4, 2, 3 ]

// ary1 は変更されない
console.log(ary1); // => [ 1, 2, 3 ]

 

Object.assign()

 

まとめ

・単に「=」で代入するのはよくないみたい!

Javascriptで知らないことが多くて、効率よくコードがかけていないな、

 ということが増えてきた。

・なにかやりたいことがあったら、とりあえず自分の知ってるやり方で考えて、

 実際にコードを書く前に他のやり方を調べてみるのがいいのかも!

 

zenn.dev