javascript - Concatenating chosen random property to object to get the array? -
i have object few arrays in it. trying return 1 of arrays randomly. have function returns 1 of properties in object, not sure how use when concatenating object name. example:
object:
var myobj = { itemone:['blue','red','green'], itemtwo:['sky','grass','book'], itemthree:['day','month','year'] }
to array myobj.itemone
return first array. want randomly return array. have function return itemone
, itemtwo
, or itemthree
randomly, when concatenating function returns myobj.
not work. can do. here function:
function pickrandomproperty(myobj) { var result; var count = 0; (var prop in myobj){ if (math.random() < 1/++count){ result = prop; } } return result; } var getiteminobject = pickrandomproperty(myobj);
using getiteminobject
returns, try concatenate myobj return array. how that? here have tried:
var getiteminobject = pickrandomproperty(myobj); var randprop = myobj.getiteminobject;
or even:
var randword = myobj + '.' + getiteminobject;
which returns '[object object].itemtwo'
here fiddle: http://jsfiddle.net/xrk7b4zs/
thanks help
you use brackets notation:
var getiteminobject = pickrandomproperty(myobj); var randprop = myobj[getiteminobject]; // ^ ^
in javascript, can refer property using dot notation , property name literal (obj.foo
), or brackets notation , property name string (obj["foo"]
) (or symbol
in es6+, that's not relevant here). in second case, string can result of expression, including variable reference.
live example:
var myobj = { itemone:['blue','red','green'], itemtwo:['sky','grass','book'], itemthree:['day','month','year'] } function pickrandomproperty(myobj) { var result; var count = 0; (var prop in myobj){ if (math.random() < 1/++count){ result = prop; } } return result; } var getiteminobject = pickrandomproperty(myobj); var array = myobj[getiteminobject]; document.body.insertadjacenthtml( "beforeend", "<pre>" + json.stringify(array) + "</pre>" );
side note: there's easier way pick random property, assuming care object's "own" properties (not ones prototype):
function pickrandomproperty(myobj) { var keys = object.keys(myobj); return keys[math.floor(math.random() * keys.length)]; }
live example:
var myobj = { itemone:['blue','red','green'], itemtwo:['sky','grass','book'], itemthree:['day','month','year'] } function pickrandomproperty(myobj) { var keys = object.keys(myobj); return keys[math.floor(math.random() * keys.length)]; } var getiteminobject = pickrandomproperty(myobj); var array = myobj[getiteminobject]; document.body.insertadjacenthtml( "beforeend", "<pre>" + json.stringify(array) + "</pre>" );
Comments
Post a Comment