2

I am using a tagged template literal to output an array of objects, but I want to display a random object, and not all the objects.

How do I display a random object from the array of objects?

const archetypes = [
  {
    type: 'The Magician',
    desc: 'A powerful figure who has harnessed the ways of the universe to achieve key goals.',
    strengths: 'omniscience, omnipotence, discipline',
    weaknesses: 'corruptibility, arrogance',
  }, {
    type: 'The Lover',
    desc: 'The romantic lead who’s guided by the heart.',
    strengths: 'humanism, passion, conviction',
    weaknesses: 'naivete, irrationality'
  }
];

const archetypesTemplate = types => {
  return `
    <h3><span><i>${types.type}</i></span></h3>
    <p class="desc">${types.desc}</p>
    <h3><span><u>Strengths:</u> ${types.strengths}</span></h3>
    <h3><span><u>Weaknesses:</u> ${types.weaknesses}</span></h3>  
  `;
}

const randomArchetypeGenerator = () => {
  let randomArchetype = archetypes[Math.floor(Math.random() * archetypes.length)];
  document.getElementById('archetype').innerHTML = `${archetypes.map(archetypesTemplate).join('<hr>')}`;
}

randomArchetypeGenerator();
<h3>Archetype: <br><div id="archetype"></div></h3>
Millhorn
  • 2,953
  • 7
  • 39
  • 77

1 Answers1

2

So, use randomArchetype instead of map the whole array.

const archetypes = [
  {
    type: 'The Magician',
    desc: 'A powerful figure who has harnessed the ways of the universe to achieve key goals.',
    strengths: 'omniscience, omnipotence, discipline',
    weaknesses: 'corruptibility, arrogance',
  }, {
    type: 'The Lover',
    desc: 'The romantic lead who’s guided by the heart.',
    strengths: 'humanism, passion, conviction',
    weaknesses: 'naivete, irrationality'
  }
];

const archetypesTemplate = types => {
  return `
    <h3><span><i>${types.type}</i></span></h3>
    <p class="desc">${types.desc}</p>
    <h3><span><u>Strengths:</u> ${types.strengths}</span></h3>
    <h3><span><u>Weaknesses:</u> ${types.weaknesses}</span></h3>  
  `;
}

const randomArchetypeGenerator = () => {
  let randomArchetype = archetypes[Math.floor(Math.random() * archetypes.length)];
  document.getElementById('archetype').innerHTML = archetypesTemplate(randomArchetype)
}

randomArchetypeGenerator();
<h3>Archetype: <br><div id="archetype"></div></h3>
Mina
  • 14,386
  • 3
  • 13
  • 26