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