JavaScriptでは、穴のある配列を作成できます。
a = [];
a[0] = 100;
a[5] = 200;
a[3] = 300;
a.forEach(function(x) {alert(x);});
要素が昇順で処理されるかどうか、またはこれは信頼できる事実ではないかどうかについての情報を見つけることができませんでした。
「for..in」ループが配列インデックスを昇順でトラバースする一方で、オブジェクトのプロパティ名がオブジェクトに追加されたのと同じ順序でトラバースされることを確認しました(少なくともそのように見えます)。
(つまり、配列は内部的にある種のツリーであり、オブジェクトはハッシュテーブルであるように見えます。)
Rhino JavaScriptが存在しない要素もトラバースすることがわかりました:http: //ideone.com/7Z3AFh(for..inとは異なります)。