awilum.ru
Статьи Курсы Об авторе

Выбор нескольких случайных элементов массива в JavaScript

В JavaScript есть несколько способов выбрать несколько случайных элементов из массива.

Использование Math.random() и slice()

function getRandomElementsFromArray(arr, count) {
    const shuffled = arr.sort(() => 0.5 - Math.random());
    return shuffled.slice(0, count);
}

const myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const numberOfRandomElements = 3;

const randomElements = getRandomElementsFromArray(myArray, numberOfRandomElements);
console.log(randomElements);

Этот код сначала перемешивает массив, используя sort() с функцией сравнения, основанной на Math.random(), затем использует slice() для выбора указанного количества элементов из перемешанного массива.

Использование цикла

function getRandomElementsFromArray(arr, count) {
    const result = [];
    const arrayCopy = arr.slice(0);
    const length = arrayCopy.length;
    for (let i = 0; i < count; i++) {
        const randomIndex = Math.floor(Math.random() * (length - i));
        result.push(arrayCopy[randomIndex]);
        arrayCopy[randomIndex] = arrayCopy[length - i - 1];
    }
    return result;
}

const myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const numberOfRandomElements = 3;

const randomElements = getRandomElementsFromArray(myArray, numberOfRandomElements);
console.log(randomElements);

Этот код использует цикл для выбора случайного элемента из массива и добавления его в новый массив. Каждый выбранный элемент удаляется из копии исходного массива, чтобы избежать повторений.

Хотите освоить JavaScript и стать востребованным разработчиком?
Присоединяйтесь к курсу JavaScript Базовый уровень прямо сейчас!
Изучите основы и продвинутые концепции, создавайте интерактивные веб-приложения и воплотите свои идеи в реальности. Не упустите шанс стать экспертом в мире разработки – начните свой путь прямо сейчас!
Обнаружили ошибку в этой статье? Хотите уточнить, обновить или добавить что-то?
Все мои статьи доступны для редактирования на GitHub. Буду благодарен за любое улучшение или исправление!