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