ハッピーメモメモ

私的備忘録

【Javascript】配列に変更を加えると、なにが起きるか

delete演算子

・配列の要素の削除を行う

・実行の結果、配列は疎になる

 →削除した要素は消えるのではなく、「定義されていない」状態になる

・lengthプロパティは変化しない

 →要素数は変化しない

f:id:n-moeko1966:20220119142004p:plain

 

splice()メソッド

・要素の挿入と削除を別々に、或いは同時に実行することができる

・挿入や削除が行われた後、配列の要素はそのほかの要素と連続するように移動され、必要に応じてインデックスは増加/現象する

 

concat()メソッド

・呼び出した配列の要素の後に、引数で指定した要素を追加した配列を新たに生成し、返す

・この時、呼び出した配列の新しいコピーを作成している!

 →元の配列を直接操作しないので、元の配列は変更されない!!

・引数に配列を指定すると、その配列は展開される

 ※入れ子になった配列は展開されない

f:id:n-moeko1966:20220119144729p:plain

 

push()メソッド

・配列の最後に1個または複数の要素を追加し、追加した後の配列の長さを返す

・引数に配列を指定しても、配列を展開しない

 

map()メソッド

・呼び出された配列は変更しない

・配列が疎の場合、存在しない要素に対しては関数は呼び出されないが、

 map()メソッドから返される配列も元の配列と同じように疎になる

 →元の配列と同じ長さになり、同じインデックスの要素が存在しない状態になる

 

所感

・基本型ならコピー、オブジェクト型なら参照をとると思っていたが、

 オブジェクト型でもメソッドによってコピーを作成する場合、

 参照を代入する場合があるのだと分かった

 

 

参考:

www.oreilly.co.jp