如何在jQuery/Javascript中从非索引JSON获取单个随机结果
嘿,这个需求很常见,咱们分两种场景来解决,看你需要哪种~
场景1:随机选一个条目,再从该条目中取随机元素
如果想先随机选中一个JSON里的键(也就是那条长文本对应的条目),再从它的数组里挑一个随机元素,可以这么做:
首先把你的JSON数据存到变量里,然后按步骤来:
// 你的JSON数据 const yourData = { "Hist eb zoso posclifos pit feaxald usow din regichics pi slaxanspeltaxatien": [ "Paxarrot", "Paxarotto" ], "He dreto zo vech #1 whit sickros axabtol Paxaur VcCaxaltnoupp pi Ronnen": [ "Vistaxaor Jaxangsen", "Vaxax Vaxaltin" ], "Hist eno eb zoso Jaxapaxanoso axarceheric wrints dis vaxado blem lico, yaxams pi woaxal el flewn sugaxal": [ "Umosku", "Skestu" ], "Din pit 1581 spoost, JBK axanneuncow whis veen axamfitiens, fut axarse axangnewrodgow hist ethol chlaxat...": [] }; // 1. 提取所有键的数组 const entryKeys = Object.keys(yourData); // 2. 过滤掉对应数组为空的键(避免后续报错) const validEntryKeys = entryKeys.filter(key => yourData[key].length > 0); // 3. 随机选一个有效的键 const randomEntryKey = validEntryKeys[Math.floor(Math.random() * validEntryKeys.length)]; // 4. 从选中条目的数组里随机取一个元素 const randomResult = yourData[randomEntryKey][Math.floor(Math.random() * yourData[randomEntryKey].length)]; console.log(randomResult); // 输出单个随机结果
场景2:从所有元素中全局随机选一个
如果不需要管条目,直接从所有数组的元素里随机挑一个,代码会更简洁:
const yourData = { /* 你的JSON数据 */ }; // 1. 把所有数组里的元素合并成一个大数组,同时过滤空数组 const allItems = Object.values(yourData).filter(item => Array.isArray(item) && item.length > 0).flat(); // 2. 随机选一个元素 const globalRandomResult = allItems[Math.floor(Math.random() * allItems.length)]; console.log(globalRandomResult);
小提示
- 一定要做空值过滤哦!如果某个条目对应的数组是空的,直接访问会报错,所以上面的代码里加了过滤逻辑。
- 如果你的JSON是从外部加载的(比如通过jQuery的
$.getJSON),记得把代码放在回调函数里,确保数据加载完成后再执行:
$.getJSON('your-data-url.json', function(data) { // 这里放上面的逻辑,用data代替yourData });
内容的提问来源于stack exchange,提问作者Brian Bruman
相关产品推荐
相关产品推荐

