【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で知らないことが多くて、効率よくコードがかけていないな、
ということが増えてきた。
・なにかやりたいことがあったら、とりあえず自分の知ってるやり方で考えて、
実際にコードを書く前に他のやり方を調べてみるのがいいのかも!