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

Javascript中性别的动态对象值

Javascript中性别的动态对象值

守候你守候我 2022-01-07 16:21:12
我正在尝试编写一些从对象加载文本并以持续存在的方式随机分配性别的东西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 并在调用对象时执行随机部分。有什么方法可以按照我的方式进行吗?
查看完整描述

2 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

您需要为性别而不是某些道具返回整个内部对象,并且基于此您可以检索对象内部的道具:


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}`

}


查看完整回答
反对 回复 2022-01-07
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

那是因为您在分配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));


查看完整回答
反对 回复 2022-01-07
  • 2 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号