キノコが何か作るブログ

ゲーム・ドット絵・アプリなどを作ります

MENU

JavaScriptのpush関数は、空いている末尾に追加する関数ではないということ

JavaScriptには、配列の末尾に要素を追加してくれるpush関数という便利なものがある。
だが、僕はこのpush関数を勘違いして使っていた。
僕は、空配列にpush関数を使ったら、先頭から順番に追加されて、配列が足りなくなったら要素を追加してくれる関数だと思っていた。

js.studio-kingdom.com

リファレンスを読むとわかるが、配列のlengthを使うと書いてある。
空配列だったとしても4個確保したら配列の長さは4になるわけなので、長さでいうと配列の末尾は4ということになる。なので、push関数で追加されるのは5番目ということだ。

実際に、試してみる。
長さ10の空配列を作り、push関数で文字列「追加」を末尾に追加している。

//配列を作る
var array = new Array(10);
//文字列追加を末尾に追加
array.push("追加");
//表示
console.log("array[0] = " + array[0]);
console.log("array[10] = " + array[10]);

これを動かすとこうなる。
f:id:mizukinoko:20190419154406p:plain

配列の0番目はundefineになっている。逆に、配列の10番目は「追加」という文字列が入っている。

C++vectorでも同じなので、注意したい。

プライバシーポリシー