为了账号安全,请及时绑定邮箱和手机立即绑定

如何从嵌套在对象中的数组中选择一个随机项

如何从嵌套在对象中的数组中选择一个随机项

摇曳的蔷薇 2021-06-15 15:49:13
我正在尝试一个项目,该项目将从对象中的 3 个嵌套数组之一中选择一个随机答案。我的目标是事后知道答案是从哪个数组中出来的,所以我可以用它来知道新句子是什么。下面的示例适用于 1 个数组,但我想知道答案是好的、坏的还是有疑问的答案,因此我将它放在一个对象中。编辑:下面的代码在我的对象中为我提供了一个随机属性,但我需要更深入一步。它旁边的评论是我尝试过的,但它给了我未定义的。const randomAnswers = {goodAnswers: ['yes','Absolutely','certainly',"I'm sure",'HELL YES'],maybes: ['maybe','probably','perhaps',"honestly man, i really don't know this one"],badAnswers: ['LOL NO','no way man','maybe',"forget it",'HELL no','Are you serious?']};{const init = () => {console.log("initiated");let answer = document.querySelector('.answer');answer.style.opacity = 0;setTimeout(fixSentence,3000);//fixSentence();}const fixSentence = () => {    let a = document.querySelector('.answer');    let think = document.querySelector('.think');    console.log('shown');    console.log(a.textContent);    let randomAnswer = randomAnswers[Math.floor(Math.random()*randomAnswers.length)];    var randomProperty = function (obj) {        var keys = Object.keys(obj)        let random = obj[keys[ keys.length * Math.random() << 0]];        return random/*[Math.floor(Math.random()*randomAnswers.length)]*/;    };    console.log(randomProperty(randomAnswers))    let splittedSentence = a.textContent.split(" ");    console.log(splittedSentence);    a.textContent = `${randomAnswer}`;    a.style.opacity = 1;    think.style.opacity = 0;}init();}console.log(randomAnswer) 的输出现在显然是未定义的,但我不知道如何从对象的三个数组之一中选择一个随机项。
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

你可以这样做:


const randomAnswers = {

  goodAnswers: ['yes','Absolutely','certainly',"I'm sure",'HELL YES'],

  maybes: ['maybe','probably','perhaps',"honestly man, i really don't know this one"],

  badAnswers: ['LOL NO','no way man','maybe',"forget it",'HELL no','Are you serious?']

};


const randomNumber = function(subject) {

  return Math.floor(Math.random()*subject.length);

}


const types = Object.keys(randomAnswers);

const randomTypeNumber = randomNumber(types);

const randomType = types[randomTypeNumber];


const randomAnswerNumber = randomNumber(randomAnswers[randomType]);

const randomAnswer = randomAnswers[randomType][randomAnswerNumber];


console.log( { randomType, randomAnswer } );

您从对象中选择一个随机键,然后使用Object.keys(randomAnswers).length随机数的数组长度从该数组中选择一个随机元素。


查看完整回答
反对 回复 2021-06-24
  • 1 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信