75000 を超えるプロパティを持つオブジェクトがあります。オブジェクトの形式は次のとおりです。
// The key starts with 3 letters and then is followed by 8 numbers
var bigArray = {'AAA########':123456789,
'AAA########':123456790,
'AAA########':123456791
};
JavaScript オブジェクトのプロパティの数には既知の制限がありますか?私のテストでは、オブジェクトは 65500 要素でも動作します。
- Windows 7、IE9 ではスクリプトがクラッシュします (エラー -2147024882)。
- Windows XP、IE8 は正常に動作します。
ベストアンサー1
Chromeの現在のバージョン(2017年9月)では、830万個のキーブラウザのコンソールにこれを貼り付けてみてください:
const obj = {};
let keyCount = 0;
while (true) {
obj[Math.random().toString(36)] = keyCount;
if (++keyCount % 10000 === 0) console.log(keyCount);
}
Node.js でも同様の制限が発生します。
node --max-old-space-size=20000 -e "let obj = {}; let keyCount = 0; while(1) { obj[Math.random()] = Math.random(); if(++keyCount % 10000 === 0) console.log(keyCount); }"
興味深いことに、地図、私は約1,680万クラッシュする前にキーを1つ以上押すと(この制限は次のようにすれば回避できます)これ)。