#javascript #json #object #random
#javascript #json #объект #Случайный
Вопрос:
Я извлекаю список объектов из вызова json. Это кавычки со значениями ‘Author’ и ‘Text’. Вот небольшой пример.
0:
author: "Thomas Edison"
text: "Genius is one percent inspiration and ninety-nine percent perspiration."
__proto__: Object
1:
author: "Yogi Berra"
text: "You can observe a lot just by watching."
__proto__: Object
Затем я выбираю случайный объект из списка. Я не могу понять, как получить оба значения из выбранного объекта. Я могу получить текст и автора отдельно, но, похоже, я не могу получить их оба
они работают
data[ Math.floor(Math.random() * data.length) ]['text']
data[ Math.floor(Math.random() * data.length) ]['author']
Я пробовал это, и ни одна из них не работает
data[ Math.floor(Math.random() * data.length) ]['author','text']
data[ Math.floor(Math.random() * data.length) ]['author'],['text']
Заранее спасибо
Ответ №1:
Вы можете сначала получить объект, а затем получить значения текста и автора:
var obj = data[ Math.floor(Math.random() * data.length) ];
console.log(obj.text, obj.author);
Но используя это:
data[ Math.floor(Math.random() * data.length) ]['text']
data[ Math.floor(Math.random() * data.length) ]['author']
вероятно, вы получите неправильную (text, author)
пару, например, он может получить вам пару ("You can observe a lot just by watching.", "Thomas Edison")
, что неверно, потому что объект, выбранный при получении текста, может отличаться от объекта, выбранного при получении автора, это Math.floor(Math.random() * data.length)
связано с тем, что повторный вызов, вероятно, даст разные результаты для каждого вызова.
Ответ №2:
В вашем подходе вы генерируете случайный выбор для каждого автора и выбора цитаты. Сохраните свой случайный выбор в одной другой переменной, затем выберите этот индекс из массива.
import random
class Quote:
def __init__(self, author, quote):
self.author = author
self.quote = quote
# Get the quotes list from the api call
quote1=Quote('Thomas Edison','Genius is one percent inspiration and ninety-nine percent perspiration.')
quote2=Quote('Yogi Berra','You can observe a lot just by watching.')
quotesList=[quote1,quote2]
####
#Using random number generator to get random choce less than max lenght of fetched list
maxListLen=len(quotesList)-1
randomChoice=random.randint(0, maxListLen)
print(quotesList[randomChoice].author,' ',quotesList[randomChoice].quote)