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

使用JS从JSON中获取随机消息始终返回首个对象的问题求解

问题原因

你代码的错误出在随机索引的计算逻辑:
你声明的values是jsonData整体的属性值集合,如果你的jsonData是外层仅包含quotes一个属性的对象,那values的长度恒为1,Math.floor(Math.random() * values.length)的计算结果永远是0,自然永远取到quotes数组的第一个元素。

修复方案

直接使用quotes数组的长度计算随机索引即可:

const randomIndex = Math.floor(Math.random() * jsonData.quotes.length)
const randomValue = jsonData.quotes[randomIndex]
console.log(randomValue.quote)

如果你的需求原本就是取jsonData所有属性值的随机项,直接复用你注释里的代码即可:

const values = Object.values(jsonData) 
const randomValue = values[Math.floor(Math.random() * values.length)]
console.log(randomValue.quote);
注意事项
  • 计算随机索引时必须用目标数组的长度作为乘数,才能保证生成的索引落在目标数组的合法取值范围内
  • 如果jsonData.quotes可能为空,建议提前增加长度判断逻辑,避免取值为undefined

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 22:03:03