仙台の山奥で自転車に乗ったり転んだり

愛車の GIOS でサイクリングしたりポタリングしたり、それをブログに記録してみたり。ロードバイクや自転車や坂のことを書いてみたり。ときたまプログラムのことを忘れないようにメモってみたり。

Arrayの空要素の列挙

ちょっと試してみて気になったのでメモ。
↓の実行結果が、手元のNode.jsだと期待通りなのにChromeのコンソールだと(3)のArray#mapだけ「6」になる。
JavaScriptの動的配列では、forEachなりmapなりは空要素を無視する仕様だと理解していたんだけど……。何か間違っている気もするので、後で再確認するためにメモっておく。

var array = new Array();
array.push('foo');
array.push('bar');
array[5] = 'hoge';

// (1)
console.log(array.length); // 6

var count1 = 0;
array.forEach(function(i) {
    count1++;
});
// (2)
console.log(count1); // 3

var count2 = 0;
array.map(function(i) {
    count2++;
});
// (3)
console.log(count2); // 3

var count3 = 0;
array.filter(function(i) {
    count3++;
});
// (4)
console.log(count3); // 3