Javascript中性别的动态对象值

我正在尝试编写一些从对象加载文本并以持续存在的方式随机分配性别的东西


const output = {

  text: "He thought that his sweater would suit him"

}

我希望能够让该对象在显示时随机显示“他认为他的毛衣会适合他”或“她认为她的毛衣会适合她”。在尝试解决这个问题而不必本质上创建两个不同的对象——一个用于男性,一个用于女性——我已经做到了这一点:


const gender = {

  male: {

    pronoun: "he",

    possPronoun: "his",

    possAdjective: "his",

    object: "him",

    moniker: "sir"

  },

  female: {

    pronoun: "she",

    possPronoun: "hers",

    possAdjective: "her",

    object: "her",

    moniker: "ma'am"

  }

};


function randGender (usage) { // Add lettercase functionality later

  return Math.floor(Math.random()*2) == 1 ? gender.female[usage] : gender.male[usage] 

}


console.log(randGender("pronoun"));

我被卡住的地方是在此之后要做什么。


const output = {

  text: `${randGender("pronoun")} thought that ${randGender("possAdjective")} sweater would suit ${randGender("object")}`

}


console.log(output.text); //she thought that his sweater would suit her

...当我希望它保持所有一种性别时,显然不起作用。


我认为有一些解决方法,例如使用 output.text.male 和 output.text.female 并在调用对象时执行随机部分。有什么方法可以按照我的方式进行吗?


守候你守候我
浏览 143回答 2
2回答

RISEBY

您需要为性别而不是某些道具返回整个内部对象,并且基于此您可以检索对象内部的道具:function getRandGender() {  return Math.floor(Math.random() * 2) == 1 ? gender.female : gender.male}const randGender = getRandGender();const output = {  text: `${randGender.pronoun} thought that ${randGender.possAdjective} sweater would suit ${randGender.object}`}

胡子哥哥

那是因为您在分配output.text值时调用了函数 randGender 三个不同的时间,所以它在每次调用时随机生成一个性别。最好使用“随机化器”将变量定义为对象一次,然后在分配output.text.请参阅下面的片段。const gender = {  male: {    pronoun: "he",    possPronoun: "his",    possAdjective: "his",    object: "him",    moniker: "sir"  },  female: {    pronoun: "she",    possPronoun: "hers",    possAdjective: "her",    object: "her",    moniker: "ma'am"  }};const randomGender = Math.floor(Math.random() * 2) == 1 ?  gender.female :  gender.male;console.log(`Random Gender:`, randomGender);const output = {  text: `${randomGender.pronoun} thought that ${randomGender.possAdjective} sweater would suit ${randomGender.object}`}document.write(JSON.stringify(output));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript