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

我正在尝试一个项目,该项目将从对象中的 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) 的输出现在显然是未定义的,但我不知道如何从对象的三个数组之一中选择一个随机项。


摇曳的蔷薇
浏览 159回答 1
1回答

慕标5832272

你可以这样做:const randomAnswers = {&nbsp; goodAnswers: ['yes','Absolutely','certainly',"I'm sure",'HELL YES'],&nbsp; maybes: ['maybe','probably','perhaps',"honestly man, i really don't know this one"],&nbsp; badAnswers: ['LOL NO','no way man','maybe',"forget it",'HELL no','Are you serious?']};const randomNumber = function(subject) {&nbsp; 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随机数的数组长度从该数组中选择一个随机元素。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript