JavaScript:对象键的快速随机索引

JavaScript:对象键的快速随机索引,javascript,optimization,Javascript,Optimization,我试图从用作快速索引词典的对象中随机选择一个随机属性 考虑以下代码: //创建测试字典 var dict={}; 对于(变量i=0;i键!==属性); 返回true; } 返回{defineProperty,deleteProperty}; } //创建测试字典 var dict=新代理( Object.defineProperty({},'.\u键'{ 对,, 可枚举:false, 可写:对, 值:[] }), generateKeyTracker(“钥匙”) ); 对于(变量i=0;i

我试图从用作快速索引词典的对象中随机选择一个随机属性

考虑以下代码:

//创建测试字典
var dict={};
对于(变量i=0;i<10000;i++){

var num=Math.random()*1000000如果缓存
对象.keys
数组不可行,您可以使用以下命令维护自己的副本:

函数generateKeyTracker(KeyPropertyName){
常量集=新集();
函数定义属性(目标、属性、描述符){
target[属性]=descriptor.value;
if(set.has(property))返回true;
设置。添加(属性);
目标[KeyPropertyName].push(属性);
返回true;
}
函数deleteProperty(目标,属性){
删除目标[财产];
如果(!set.delete(property))返回true;
目标[KeyPropertyName]=目标[KeyPropertyName]。筛选器(键=>键!==属性);
返回true;
}
返回{defineProperty,deleteProperty};
}
//创建测试字典
var dict=新代理(
Object.defineProperty({},'.\u键'{
对,,
可枚举:false,
可写:对,
值:[]
}),
generateKeyTracker(“钥匙”)
);
对于(变量i=0;i<1e4;i++){
var num=Math.random()*1e6