js在数组arr中随机获取count数量的元素

// 在数组arr中随机获取count数量的元素;
const getRandomArrayElements = (arr, num) => {
  // 新建一个数组,将传入的数组复制过来,用于运算,而不要直接操作传入的数组;
  let temp_array = new Array();
  for (let index in arr) {
    temp_array.push(arr[index]);
  }
  // 取出的数值项,保存在此数组
  let return_array = new Array();
  for (let i = 0; i < num; i++) {
    // 判断如果数组还有可以取出的元素,以防下标越界
    if (temp_array.length > 0) {
      // 在数组中产生一个随机索引
      let arrIndex = Math.floor(Math.random() * temp_array.length);
      // 将此随机索引的对应的数组元素值复制出来
      return_array[i] = temp_array[arrIndex];
      // 然后删掉此索引的数组元素,这时候temp_array变为新的数组
      temp_array.splice(arrIndex, 1);
    } else {
      // 数组中数据项取完后,退出循环,比如数组本来只有10项,但要求取出20项.
      break;
    }
  }
  return return_array;
};

原文地址:https://www.cnblogs.com/lml2017/p/10329490.html

时间: 2024-08-04 06:30:23

js在数组arr中随机获取count数量的元素的相关文章

6.7-3将数组arr中索引值为2的元素替换为“bb”

package shuzu; import java.util.Arrays; public class TH { public static void main(String[] args) { // TODO Auto-generated method stub String arr[] = {"qq","ww","ee"}; for(String x : arr) { System.out.println("替换前数组arr中元素

3 移除数组arr中所有与item相等的元素,不更改原数组。

方法一:filter ES5方法 var a=[1,5,'ff','g','h','sd']; alert(remove(a,'g')); function remove(arr,item){ return arr.filter(function(ele){return ele !=item}) } 方法二:push方法 function remove(arr,item){ var arr2=[]; for (var i=0;i<arr.length ;i++) { if (arr[i] !=i

键盘录入6个int类型的数据存入数组arr中,将arr数组中的内容反转...

有一道很有意思的数组操作相关编程题,闲来无事用JS解决了一下,问题描述如下: (1) 键盘录入6个int类型的数据存入数组arr中: (2) 将arr数组中的内容反转: (3) 将反转后的数组角标为奇数的元素相互交换,即1和3交换,3和5交换,以此类推: (4) 将数组中最后一个角标为奇数的元素和数组中第一个角标为奇数的元素交换: (5)打印最终的数组,(实现了1—4步之后的数组) 示例:如用户输入的6个整数为[1,2,3,4,5,6]>[6,5,4,3,2,1]>[6,3,4,1,2,5]&

从一个数组中随机取出一定数量元素组成新数组

/** * 从一个数组中随机取出一定数量元素组成新数组 * @param array 一个String类型的数组 * @param number需要取出元素的数量 * @return 一个随机的数组 * @throws NullPointerException原数组不能为空 *@throws ArrayIndexOutOfBoundsException新数组长度应不大于原数组的长度 */ public static String[]  getRandomArray(String[] array,

在ASP.NET MVC应用程序中随机获取一个字符串

在开发ASP.NET MVC应用程序时,有可能需要一个随机字符串,作为密码或是验证码等. 如果你需要的是SQL版本,可以参考<密码需要带特殊字符(二)>http://www.cnblogs.com/insus/archive/2012/02/16/2354453.html 此篇实现方法多少是参照这个实现C#版本. 在应用程序下,创建一个CharacterUtility.cs: 这个类别中,分别有几个静态方法:一,为随机的小写字母: 二,是随机产生大写字母: 三,是随机产生数字: 四,是产生特殊

封装函数,找出数组 arr 中重复出现过的元素.

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><script> //封装函数,找出数组 arr 中重复出现过的元素. //示例: console.log(duplicates( [1, 2, 4, 4, 3, 3, 1,

task 2:移出数组arr中与2相等的元素,并生成一个新数组,不改变原数组。

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>移出数组arr中与2相等的元素,并生成一个新数组,不改变原数组.</title> </head> <body> <script> var arr = [1,2,3,4,2,5,6,2,7,2]; var str4 = arr.slice(1,2); var st

js从数组中随机获取n个不重复的数据

做云课堂的作业时遇到一要求,实现刷新页面时显示不同数据,(数组中20个据,页面加载10个).思路就是从0-19中随机生成10个不同的数,让数组取下标输出数据. 下面是在num的范围内生成n个不重复的数.例如从10以内随机生成5个不同的数randomNum(10,5); function randomNum(num,n) { if(typeof num!=="number"||typeof n!=="number") return false; //对象检测 var

sampleSize - 从数组中随机获取 n 个元素

从 array 中获取 n 个唯一键随机元素. 使用Fisher-Yates算法 对数组进行打乱. 使用 Array.slice() 获取第一个 n 元素. 省略第二个参数,n 从数组中随机取得 1 个元素. const sampleSize = ([...arr], n = 1) => { let m = arr.length; while (m) { const i = Math.floor(Math.random() * m--); [arr[m], arr[i]] = [arr[i],