📌  相关文章
📜  javascript 从数组中随机选择 n 个 - Javascript (1)

📅  最后修改于: 2023-12-03 15:31:40.925000             🧑  作者: Mango

JavaScript 从数组中随机选择 n 个

在 JavaScript 中,有时我们需要从一个数组中随机选择 n 个元素。本文将介绍几种实现方式。

方法一:使用 Math.random()

使用 Math.random() 函数可以生成一个 0 到 1 之间的随机小数,我们可以将其乘以数组长度,取整后得到一个随机的数组下标,不断重复这个过程,直到选择了 n 个元素。

function getRandomArrayElements(arr, n) {
  const result = new Array(n);
  let len = arr.length;
  const taken = new Array(len);
  while (n--) {
    const x = Math.floor(Math.random() * len);
    result[n] = arr[x in taken ? taken[x] : x];
    taken[x] = --len;
  }
  return result;
}
  • arr:原始数组
  • n:需要选择的元素个数
方法二:使用 lodash 库

lodash 是一个 JavaScript 工具库,提供了很多数组操作的方法,其中包含了一个 sampleSize() 方法,可以从一个数组中随机选择 n 个元素。

const _ = require('lodash');

_.sampleSize([1, 2, 3, 4, 5], 3); // [3, 1, 2]
  • 第一个参数为原始数组
  • 第二个参数为需要选择的元素个数
方法三:使用数组排序

我们还可以先使用数组排序,然后选择前 n 个元素。数组排序可以使用 sort() 方法,可以自定义排序规则。这里我们使用 Math.random() 函数生成一个随机数来作为排序规则,然后选择前 n 个元素。

function getRandomArrayElements(arr, n) {
  arr.sort(() => Math.random() - 0.5);
  return arr.slice(0, n);
}
  • arr:原始数组
  • n:需要选择的元素个数

以上就是几种实现从数组中随机选择 n 个元素的方式。