Obiect aleatoriu din mai multe Array cu procentaj de șanse în JS

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
Marius
Mesaje: 60

Obiect aleatoriu din mai multe Array cu procentaj de șanse în JS

Am 3 Array de obiecte în JavaScript:

Cod: Selectaţi tot

const fruits = [
  {name: "Banana"}, 
  {name: "Apple"}, 
  {name: "Peach"}
]

const car = [
  {name: "Audi"}, 
  {name: "Bentley"}
]

const books = [
  {name: "Alice in wonderland"}, 
  {name: "Deep in the dark"}, 
  {name: "Hunting Show"}
]
Un array temporar în care voi stoca obiecte aleatorii alese:

Cod: Selectaţi tot

const tempArray = []
Vreau să obțin un obiect aleatoriu din array aleatoriu.

50% procentaj de șanse să obțin obiect aleatoriu din fruits.
30% procent să obțin obiect aleatoriu din array-ul car.
20% procentaj de șanse să obțin obiect aleatoriu din array books.

Exemplu:
- Șansa de 50% -> obiectul aleatoriu din array fruits este adaugat in tempArray și tempArray ar trebui să aibă obiect cu "Banana".
- Șansa de 20% -> Obiectul aleatoriu din array books este adaugat in tempArray și tempArray ar trebui să aibă obiect cu numele "Hunting Show".

Cum se poate face în javascript?

MarPlo Mesaje: 4343
Trebuie să obții două numere aleatorii:
- primul care decide ce grup alege,
- al doilea care alege un articol din acesta.

Generăm un număr aleatoriu de la 1 la 100.
- Un număr de la 1 la 20 alege un element aleatoriu din array books,
- un număr de la 21 la 50 alege un element aleatoriu cars,
- un număr de la 51 la 100 alege un element aleatoriu array fruits.

Cod: Selectaţi tot

const fruits = [
  {name: "Banana"}, 
  {name: "Apple"}, 
  {name: "Peach"}
]

const car = [
  {name: "Audi"}, 
  {name: "Bentley"}
]

const books = [
  {name: "Alice in wonderland"}, 
  {name: "Deep in the dark"}, 
  {name: "Hunting Show"}
]

const tempArray = []

let randomNumber = Math.floor((Math.random() * 100) + 1); // 1 to 100

if (randomNumber < 21) {
  let randomIndex = Math.floor(Math.random() * books.length); // 0 to 3
  tempArray.push(books[randomIndex]);
}
else if (randomNumber < 51) {
  let randomIndex = Math.floor(Math.random() * car.length); // 0 or 1
  tempArray.push(car[randomIndex]);
}
else {
  let randomIndex = Math.floor(Math.random() * fruits.length); // 0 to 2
  tempArray.push(fruits[randomIndex]);
}

console.log('tempArray: ' + JSON.stringify(tempArray));

Subiecte similare