N случайных элементов в массиве

JavaScriptJavaScriptBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии мы изучим, как выбирать случайные элементы из массива с использованием JavaScript. Мы узнаем, как перемешивать массив с использованием алгоритма Фишера-Йейтса и использовать его для случайного выбора одного или нескольких элементов из массива. Это практическое занятие旨在加深您对数组操作的理解,并提高您在JavaScript中的问题解决能力。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/loops("Loops") javascript/BasicConceptsGroup -.-> javascript/array_methods("Array Methods") javascript/AdvancedConceptsGroup -.-> javascript/spread_rest("Spread and Rest Operators") subgraph Lab Skills javascript/variables -.-> lab-28503{{"N случайных элементов в массиве"}} javascript/data_types -.-> lab-28503{{"N случайных элементов в массиве"}} javascript/arith_ops -.-> lab-28503{{"N случайных элементов в массиве"}} javascript/comp_ops -.-> lab-28503{{"N случайных элементов в массиве"}} javascript/loops -.-> lab-28503{{"N случайных элементов в массиве"}} javascript/array_methods -.-> lab-28503{{"N случайных элементов в массиве"}} javascript/spread_rest -.-> lab-28503{{"N случайных элементов в массиве"}} end

Практика программирования: получение случайных элементов из массива

Для практики программирования откройте Терминал/SSH и введите node. Следующий код использует алгоритм Фишера-Йейтса для перемешивания массива и получения n случайных, уникальных элементов по уникальным ключам из массива, до размера массива.

const sampleSize = ([...arr], n = 1) => {
  let m = arr.length;
  while (m) {
    const i = Math.floor(Math.random() * m--);
    [arr[m], arr[i]] = [arr[i], arr[m]];
  }
  return arr.slice(0, n);
};

Для использования этого кода вызовите sampleSize() с массивом и необязательным числом n элементов для извлечения. Если n не указано, функция вернет только один случайный элемент из массива.

sampleSize([1, 2, 3], 2); // [3, 1]
sampleSize([1, 2, 3], 4); // [2, 3, 1]

Резюме

Поздравляем! Вы завершили практическое занятие "N случайных элементов в массиве". Вы можете выполнить больше практических занятий в LabEx, чтобы улучшить свои навыки.