如何创建一个随机的JS对象



我想知道是否有一种方法可以创建一个随机化的JavaScript对象。可以这样理解随机:结果对象有一组随机的属性,每个属性都有一个随机的名称。问题归结为两点:

1)是否有可能在运行时创建对象,而不事先指定属性的数量?

2)是否有可能随机化对象属性的名称?

我在寻找一个解释/解决方案,而不仅仅是一个否/是的答案。

这是一种非常粗糙的方法,我想不出有什么用例:

function randomObject(){
    var ret = {};
    var propertyCount= Math.random() * 10;
    for (var x = 0; x < propertyCount; x++ ){
        ret[Math.random()] = Math.random(); 
    }
    return ret;
}

我不知道这有什么用,但是,这是可能的。

var MAX_PROPERTIES = 50;
var ALLOWED_CHARACTERS_IN_KEY = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_";
var MAX_KEY_LENGTH = 30;
var object = {};
var propertiesCount = Math.round(Math.random() * MAX_PROPERTIES);
for(var i = 0 ; i < propertiesCount ; i++) {
    var keyLength = Math.round(Math.random() * MAX_KEY_LENGTH);
    var randKey = "";
    for(var j = 0 ; j < keyLength ; j++) {
        randKey += ALLOWED_CHARACTERS_IN_KEY[Math.floor(Math.random() * ALLOWED_CHARACTERS_IN_KEY.length)];
    }
    var randValue = Math.random();
    object[randKey] = randValue;
}

注意,有些键可以以数字开头,不能用点表示法调用。

示例:

{
    "NmkQZWeW9_ojadERwK74HXYj43Lw":0.3039316821878978,
    "PZiFauEC6H":0.04273172815465165,
    "2m7cMrwRPoxpa8LvmpAaJ":0.7010494474513925,
    "D":0.4552683870622114,
    "HQhIxPxO8tsdocRuGJpnhB7k2PjD":0.18360190519964337,
    "rVwM8":0.8681098855694265,
    "3Vf5HGYDOmUli3":0.527829742115212,
    "fQ4ryGL2cxhJeRd":0.10353706566292953,
    "D_DQqODu_":0.1272988336424956,
    "8UY0a7":0.17057184875868092,
    "8i1uVtPwzl0KRA8iYZ4uKcPKF":0.9554370948377217,
    "TTi":0.038665872114993616,
    "YofUj9RrK7foQrl":0.5835241172217945,
    "sb3SzEB_":0.17136910050721899,
    "801FopHCCML4ozrfmjak":0.10999126507324442,
    "D8":0.05981337403919851,
    "oL8ZZvrAG":0.36816486041399255,
    "hfXxJ0sNp42y2HYEDXLBYgZ6mV":0.13977757384990708,
    "2xx4AJrQswA5TIcXr":0.8610074761855161,
    "68RNcKQmgnh_qTG":0.5234909406332302,
    "wJsV8BRo1cT2MtXDuh":0.4497261910215308,
    "6yFr4E81bvXK":0.5996413679577888,
    "Px2bjBvFSBu":0.017922504534248707,
    "yazK1KQbmUhE4Ul1rZX5hf0yulX_JK":0.7105144243046027,
    "cXmdnvmP":0.028121925940253756,
    "R_fDjw9yBejk3":0.699514797889162,
    "z":0.34347612922580006,
    "2kTX6Q2tzbCo3":0.678962211994213
}

最新更新