gpt4 book ai didi

javascript - 访问对象的随机属性

转载 作者:行者123 更新时间:2023-12-03 00:18:12 24 4
gpt4 key购买 nike

我有一个巨大的物体,其中包含整本 ESV 圣经。每当我按下按钮时,我都会尝试随机获取一本圣经。这是该对象的一个​​小样本。

var esvObject = {

"Genesis": {

"1": {}
"2": {}
"3": {}

},
"Exodus": {

"1": {}
"2": {}
"3": {}

}

}

这是我用来获取随机书籍的代码。

var randNum = Math.floor(Math.random() * 66);

var randBook = esvObject[randNum];

var output = randBook;

我希望它能工作,但我总是得到的输出是“未定义”,因为我希望输出是“Genesis”或“Exodus”等。获取随机数是有效的,但如果

randNum = 1

然后

randBook = esvObject[1]

输出返回“未定义”,我不知道为什么。

最佳答案

好吧,你未定义的原因是你的对象具有以下结构:

let esvObject = {
bookName: {
1 : {}
}
}

在 JavaScript 对象上使用括号 [] 表示法查找名称的匹配键并返回其值。在您的顶级对象(以 bookNames 作为键的对象)中,您必须使用有效的书籍名称,例如 Genesis。为此,请利用 Object.keys javascript 函数获取对象中所有键的数组。

然后您可以使用 [] 表示法,它在数组上具有不同的语义。

let books = Object.keys(esvObject); // ["Genesis", "Exodus", ...]
let randomKey = books[randNum] // this is an array, so index access works
let book = esvObject[randomKey] // matches on the bookname

为了将它们结合在一起,esvObject["Genesis"][1] 是有效的,因为存储为“Genesis”的对象具有属性 1

关于javascript - 访问对象的随机属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54440626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com