繁体   English   中英

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

[英]How to create a random JS object?

我想知道是否有一种创建随机化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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM