Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

299
Views
Create a new array from a random() generator?

I'm trying to create a new array with 5 random names taken from an array with 897 names. This is what I tried to do but I'm not sure how to specify that I only want 5 names:

for(let i = 0; i < pokemon.all().length; i++){
    pokedex = [i];
};
app.get('/dex', (req, res) => {
    res.send(pokedex)
});
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

function pickNOf(list, n) {
  // - create a new shallow array copy.
  // - does decouple the original reference, thus it
  //   prevents its further mutation by e.g. `splice`.
  list = Array.from(list);

  // - creates and returns an array of the desired length.
  return Array.from({ length: n }, () => list.splice(
    // - `splice` does mutate the list by removing a
    //   single item from its randomly chosen index.
    Math.floor(Math.random() * list.length), 1
  )[0]);
}
const listOfAllPokemonNames = [
  "Bulbasaur", "Ivysaur", "Venusaur", "Charmander", "Charmeleon",
  "Charizard", "Squirtle", "Wartortle", "Blastoise", "Caterpie",
  "Metapod", "Butterfree", "Weedle", "Kakuna", "Beedrill", "Pidgey"
];

console.log(
  "pickNOf(listOfAllPokemonNames, 5) ...",
  pickNOf(listOfAllPokemonNames, 5)
);
console.log(
  "pickNOf(listOfAllPokemonNames, 9) ...",
  pickNOf(listOfAllPokemonNames, 9)
);
console.log(
  "pickNOf(listOfAllPokemonNames, 3) ...",
  pickNOf(listOfAllPokemonNames, 3)
);
.as-console-wrapper { min-height: 100%!important; top: 0; }

Usage within the OP's code then does look like this ...

function pickNOf(list, n) {
  list = Array.from(list);

  return Array.from({ length: n }, () => list.splice(
    Math.floor(Math.random() * list.length), 1
  )[0]);
}

app.get('/dex', (req, res) => {
  res.send(pickNOf(pokemon.all(), 5))
});
about 4 years ago · Juan Pablo Isaza Report

0

Take a look at this, use Math.random() to generate random index and get it from pokemons array, then unset the value from pokemons to have no doublon in pokedex.

let pokemons = ['pika1','pika2','pika3','pika4','pika5','pika6','pika7']
let pokedex = [];
for (i = 0; i < 5; i++) {
  id = Math.floor(Math.random() * pokemons.length);
  pokedex.push(pokemons[id]);
  pokemons.slice(i,1)
}
//app.send() here...
console.log(pokedex)

EDIT: Considering you have a pokemon.random() generator(?) in this npm package. Simply use:

let pokedex = [];
for(let i = 0; i < 5; i++)    
    pokedex.push(pokemon.random());
app.get('/dex', (req, res) => {     
        res.send(pokedex) 
});

EDIT N°2: Using Objects

let pokedex = [];
for (i = 0; i < 5; i++) {
  let pokemon = {
  name:pokemon.random(),
  attack:Math.floor(Math.random() * (100 - 50 + 1) +50),
  defense:Math.floor(Math.random() * (100 - 50 + 1) +50)
  };
  pokedex.push(pokemon);
}

function attack(attacker,defenser)
{
  defenser.defense -= attacker.attack
  return attacker && defenser;
}

function fakeMatch(attacker,defenser)
{
  attack(attacker,defenser)
}
console.log(pokedex)
fakeMatch(pokedex[0],pokedex[3])
console.log('RESULT Pokedex 0 attacked Pokedex 3')
console.log(pokedex)

EDIT N°3: Object with function (proper way)

let pokemons = ['pika1', 'pika2', 'pika3', 'pika4', 'pika5', 'pika6', 'pika7']
let pokedex = [];
for (i = 0; i < 5; i++) {
  let id = Math.floor(Math.random() * pokemons.length);
  let pkm = {
    name: pokemons[id],
    life: 100,
    strenght: Math.floor(Math.random() * (100 - 50 + 1) + 50),
    defense: Math.floor(Math.random() * (100 - 50 + 1) + 50),
    attack: function(target) {
      target.life -= this.strenght;
      console.log(this.name + ' attack ' + target.name)
      console.log(target.name + ' loose ' + this.strenght + ' of life')
      //Test if life > 0 or anything else with % defense etc...
      if (target.life <= 0) {
        console.log(target.name + ' is dead')
      }
    }
  };
  pokedex.push(pkm);
  pokemons.slice(id, 1)
}
pokedex[0].attack(pokedex[1]);

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!