2017-05-24 98 views
0

如何获取随机对象并从多个对象.json文件的数组中获取随机键/值对?从json对象中获取随机键/值对javascript(p5.js)

我有一个p5.js脚本加载一个json文件,其中包含多个对象的数组,每个对象包含11个键/值对。我可以得到随机对象,但我还需要随机获得键/瓦力对以用作字符串。

我没有足够的代码技巧来找出随机对象和随机键/ valeu对之间随机排序的方法。对此有何想法?

在此先感谢。

样品JSON:

{ 
    "entries": [ 
    { 
     "area": "0", 
     "qtd": "3", 
     "author": "FERNANDES, C. E. de M.", 
     "title": "Fundamentos de física para geociências.", 
     "subTitle": "xxxxx", 
     "qtdPag": "v.", 
     "edition": "xxxxx", 
     "isbn": "ISBN 9788571931596.", 
     "edPlace": "Rio de Janeiro: Interciência, 2007.", 
     "cdu": "53 F363f Ac.1028543", 
     "areaKnow": "Pre-catalogação" 
    } 
] 
} 

p5.js代码:

var data; 
var fontRegular; 

function preload() { 

    fontRegular = loadFont("assets/RobotoMono-Medium.ttf"); 
    data = loadJSON("assets/data-bce-final.json"); 
} 

function setup() { 

    createCanvas(windowWidth, windowHeight); 
    setText(); 
    setInterval(setText, 5000); 
} 

function setText() { 

    var entries = data.entries; 
    var randomEntries = entries[Math.floor(Math.random() * entries.length)]; // get random item 

    background(255); 
    noStroke(); 
    fill(80, 227, 194); 
    fill(100); 
    textSize(30); 
    textFont(fontRegular); 

    text(
     // random version 
     randomEntries.author + "\n" + 
     randomEntries.title + "\n" + 
     randomEntries.subTitle + "\n" + "\n" + 
     randomEntries.edPlace + "\n" + 
     randomEntries.areaKnow + "\n" + "\n" + 
     randomEntries.cdu, 50, 60, windowWidth - 150); 
} 

function draw() { 

} 

回答

0

我相信你的意思是你想从你的entries变量随机项。如果是这样的情况下,所有你需要做的是做到以下几点:

var randomEntries = Object.keys(entries)[Math.floor(Math.random() * entries.length)]; 

Object.keys()函数将返回,你可以参考像任何其他数组中的键的数组。然后您可以使用随机生成的密钥来获取所需的值。如果您想获得随机值,请使用Object.values()

希望这就是你正在寻找的东西,因为措辞的原因我并不十分确定。

+0

感谢您的快速响应!我认为这解决了我的问题。 –

+0

很高兴帮助! –