2017-05-24 151 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

很高興幫助! –