Jak wybrać losowy element z tablicy w JavaScript?

Jak wybrać losowy element z tablicy w JavaScript?

Istnieje wiele sposobów pisania programu, który wybiera losowy element z tablicy, ale najlepiej dopasowaną metodą jest użycie kombinacji matematyki.Random () i matematyka.metody podłogowe (). Matematyka.Metoda Random () zapewnia użytkownikowi losową wartość zmiennoprzecinkową między 0 a 1. Podczas gdy matematyka.Metoda floor () po prostu przyciąga wartość zmiennoprzecinkową i uzupełnia wartość, aby była liczbą całkowitą.

Metoda 1: Element losowy z tablicy za pomocą matematyki.Random () i matematyka.podłoga()

Najpierw utwórz tablicę z następującym wierszem:

my_arr = [„Paris”, „London”, „Bangkok”, „New York”, „Los Angeles”, „Dubai”];

Ta tablica reprezentuje listę miast do wyboru losowo. Następnie po prostu utwórz nową funkcję, która przyjmuje tablicę jako parametr takiego:

funkcja ELEMENET_SELECTER (ARR)

W ramach tej funkcji pierwszą rzeczą jest przekazanie długości tablicy w oddzielnej zmiennej:

array_length = arr.długość;

Następnie po prostu zadzwoń do matematyki.Metoda landom () w celu uzyskania wartości zmiennoprzecinkowej, a następnie pomnożenia tej liczby z długością tablicy, aby uzyskać zakres między 0 a długością tablicy:

wartość = matematyka.Random () * array_length;

Ta linia zwróci wartości zmiennoprzecinkowe, ale nie są one dobre, jeśli chodzi o bycie indeksem tablicy. Potwierdź to, po prostu owijając tę ​​linię w dziennik konsoli i obserwując dane wyjściowe:

konsola.Log (wartość)

Wyjście na terminalu jest jako:

Aby zmienić te wartości na liczbę całkowitą, po prostu przejdź wartość zmienna w matematyce.metoda floor () i usuń konsolę.Linia log (wartość):

indexValue = matematyka.podłoga (wartość)

Na końcu funkcji użyj instrukcji powrotu i zwróć element w Wartość indeksu tablicy:

return ARR [indexValue];

Następnie wyjdź z funkcji element_selector, i zadzwoń do tej funkcji i owinąć to połączenie wewnątrz funkcji dziennika konsoli, aby wydrukować losowo wybrany element:

konsola.log (ELEMENET_SELECTER (MY_ARR));

Kompletny fragment kodu jest jako:

my_arr = [„Paris”, „London”, „Bangkok”, „New York”, „Los Angeles”, „Dubai”];
funkcja ELEMENET_SELECTER (ARR)
array_length = arr.długość;
wartość = matematyka.Random () * array_length;
indexValue = matematyka.podłoga (wartość);
return ARR [indexValue];

konsola.log (ELEMENET_SELECTER (MY_ARR));

Wykonaj ten program i obserwuj następujący wynik:

Z wyjścia jasno wynika, że ​​losowe elementy są wybierane z tablicy.

Metoda 2: Używanie podwójnego operatora nie bitowskiego

Zacznij od utworzenia tablicy tak jak w Method 1 za pomocą następującego wiersza:

my_arr = [„Paris”, „London”, „Bangkok”, „New York”, „Los Angeles”, „Dubai”];

Następnie zadzwoń do matematyki.Random () i wielokrotne z długością naszej tablicy, aby uzyskać zakres od 0 do długości:

wartość = matematyka.Random () * my_arr.długość;

Tym razem, aby przekonwertować tę wartość na liczbę całkowitą reprezentującą wskaźnik tablicy, po prostu zastosuj operator podwójnego nie bitowskiego, który jest podwójnym operatorem Tilde (~~), i pobrać wartość z tablicy jako:

var item = my_arr [~~ wartość];

Wreszcie, po prostu wydrukuj losowo wybrany element na terminalu za pomocą funkcji dziennika konsoli:

konsola.log (pozycja);

Kompletny fragment kodu dla metody 2 to:

my_arr = [„Paris”, „London”, „Bangkok”, „New York”, „Los Angeles”, „Dubai”];
wartość = matematyka.Random () * my_arr.długość;
var item = my_arr [~~ wartość];
konsola.log (pozycja);

Wykonaj ten program i obserwuj następujący wynik:

Z wyjścia jasno wynika, że ​​z tablicy wybierany jest losowy element

Wniosek

W JavaScript możemy wykorzystać Matematyka.losowy() funkcja z albo Matematyka.podłoga() funkcja lub podwójnie nie operator bitowy Aby pobrać losowy element z tablicy. Matematyka.Random (), po pomnożeniu przez długość tablicy, zapewnia wartość zakresu wskaźnika między zero a długością tablicy. Jednak ta wartość zakresu jest w punkcie zmiennoprzecinkowym, dlatego używasz Matematyka.podłoga() Lub Nie operatorzy bitowate Aby przekonwertować go w liczbę całkowitą, która ma być używana jako indeks tablicy. W tym artykule wyjaśniono obie te metody wraz z przykładem