数组中的 N 个随机元素

JavaScriptJavaScriptBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将探索如何使用 JavaScript 从数组中随机选择元素。我们将学习如何使用 Fisher-Yates 算法对数组进行洗牌,并使用它从数组中随机选择一个或多个元素。本实验旨在增强你对数组操作的理解,并提高你在 JavaScript 中的问题解决能力。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("`JavaScript`")) -.-> javascript/BasicConceptsGroup(["`Basic Concepts`"]) javascript(("`JavaScript`")) -.-> javascript/AdvancedConceptsGroup(["`Advanced 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。以下代码利用 Fisher-Yates 算法对数组进行洗牌,并从数组中在唯一键处获取 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);
};

要使用此代码,请使用一个数组和一个可选的要获取的元素数量 n 调用 sampleSize()。如果未提供 n,则该函数将仅从数组中随机返回一个元素。

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

总结

恭喜你!你已经完成了“数组中的 N 个随机元素”实验。你可以在 LabEx 中练习更多实验来提升你的技能。

您可能感兴趣的其他 JavaScript 教程