You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取ESV圣经对象随机属性问题求助:为何返回undefined?

解决随机获取圣经卷名返回undefined的问题

嘿,我一眼就发现问题所在啦!你的代码逻辑里有个关键误区:

问题根源

你定义的esvObject是一个键为卷名字符串的普通对象,不是数组。对象的属性只能通过对应的键(比如"Genesis")来访问,而不能像数组那样用数字索引(比如esvObject[1])。所以当你生成随机数randNum后,直接用它去访问esvObject的属性,自然会返回undefined——因为这个对象根本没有以数字为键的属性。

修复方案

我们需要先把对象里的所有卷名提取成一个数组,再用随机数作为数组索引来获取随机卷名。具体步骤如下:

  1. 使用Object.keys(esvObject)提取对象的所有键(也就是圣经卷名),得到一个卷名数组;
  2. 基于这个数组的长度生成随机索引(而不是硬编码66,这样代码更灵活);
  3. 通过数组索引拿到随机卷名。

修正后的代码

var esvObject = { "Genesis": { "1": {}, "2": {}, "3": {} }, "Exodus": { "1": {}, "2": {}, "3": {} } };

// 提取所有圣经卷名到数组
const bookNames = Object.keys(esvObject);
// 生成对应数组长度的随机索引
const randIndex = Math.floor(Math.random() * bookNames.length);
// 获取随机卷名
const randBook = bookNames[randIndex];

console.log(randBook); // 会输出"Genesis"或"Exodus"等卷名

额外优化点

用bookNames.length代替固定的66,哪怕你在测试时只放了2卷书,代码也能正确生成随机索引,避免出现索引越界的问题,让代码更健壮。

内容的提问来源于stack exchange,提问作者Caleb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:09:19