Javascript中性别的动态对象值

Javascript中性别的动态对象值,javascript,object,dynamic,literals,Javascript,Object,Dynamic,Literals,我试图写一些东西,从一个对象加载文本,并以一种持续的方式随机分配性别 const output = { text: "He thought that his sweater would suit him" } 我希望能够让对象在显示时随机显示“他认为他的毛衣适合他”或“她认为她的毛衣适合她”。为了解决这个问题,而不必创建两个不同的对象——一个是男性对象,一个是女性对象——我已经走了这么远: const gender = { male: { pronoun: "he",

我试图写一些东西,从一个对象加载文本,并以一种持续的方式随机分配性别

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在调用对象时执行随机操作。有没有办法按照我的计划去做


谢谢你的帮助

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

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三次,因此每次调用都随机生成一个性别

最好使用“随机化器”将变量定义为对象一次,然后在分配
输出.text
时调用该对象变量

请参阅下面的代码片段

const性别={
男:{
代词:“他”,
代词:“他的”,
形容词:“他的”,
对象:“他”,
绰号:“先生”
},
女性:{
代词:“她”,
代名词:“她的”,
形容词:“她”,
对象:“她”,
绰号:“女士”
}
};
const randomGender=Math.floor(Math.random()*2)==1?性别。女性:性别。男性;
log(`Random-Gender:`,Random-Gender);
常量输出={
text:`${randomGender.devon}认为${randomGender.possAdexcate}毛衣适合${randomGender.object}`
}
document.write(JSON.stringify(output))