高インデックスの配列セルを設定する前に、そのセルの前にセルを設定しない状況があります。空のセルはJavaScriptのスパース配列にどのように格納されますか?
>>> var arr = [];
undefined
>>> arr[5] = 'value';
"filled"
>>> arr
[undefined, undefined, undefined, undefined, undefined, "filled"]
このような配列はどのようにメモリに格納されていますか?未定義の値ごとに領域が割り当てられていますか?
私の実際のプロジェクトでは、非常に大きなインデックスを使用している可能性があります。たとえば、私はセル500-800と900-1000を設定するかもしれません。私はこれらの空でないセルをループし、そのインデックスを認識する必要があるため、ハッシュを使用することはできません。私はこのような配列の断片化が空のセルに1トンのメモリを消費するかどうかを知りたい。
「{}」を使用できないのはわかりません。 'for(i in obj) 'ループを使って、すべてのプロパティをループすることができます。 – zzzzBov
ハッシュテーブルを使用できないのはなぜですか?最大のインデックスを知っていれば、 'for'ループを使用することができます。要素がハッシュテーブルにあり、それを取得して処理するか、そうではなく、次のループの繰り返しに移ります。 –
各値にスペースが割り当てられている場合、 'var foo = []; foo [999999999] = "uh oh"; 'は大きなメモリ割り当てを引き起こします。それはそうではないので、そうではありません。 – Phrogz