js【实践】用 js 封装java shuffle函数(打乱数组下标方法)

此方法返回的会是一个全新的数组 所以并不会像java里的shuffle函数一样返回一个引用一样的数组

思路如下:

1、新建一个函数传入需要打乱下标的数组

2、获取数组的长度

3、新建一个用来保存并且返回结果的数组

4、根据数组的长度新建一个随机数(随机数记得要向下取整不然会下标越界)

5、循环添加到结果数组里面

代码如下:

<script type="text/javascript">
     var testArr = new Array("中国","美国","英国","法国","德国","西班牙","希腊","意大利","日本","韩国","尼日利亚","印度");

     var newArr = shuffle(testArr);
     console.log(newArr);

     function shuffle(arry){
         var sortArr = new Array();
         var len = arry.length;//获取数组长度指定随机次数 

        for (var i = 0; i < len;) {
            var index = Math.floor(Math.random() * len);
            if (arry[index] != null) {
                sortArr.push(arry[index]);
                i++;
                arry[index] = null;
            }
        }
        return sortArr;

     }
    </script>
时间: 2024-12-20 02:13:45

js【实践】用 js 封装java shuffle函数(打乱数组下标方法)的相关文章

JAVA遍历二位数组的方法

//使用方法对于二维数组进行遍历 package com; import java.util.Arrays; public class CompoundInterest { public static void main(String[] args) { // TODO Auto-generated method stub double[][] balances= new double[3][3]; for(int j = 0; j < balances[0].length; j++){ bal

java JNI 二维数组作为方法参数传递给本地

java里面有如下本地定义: private static native int setFilter(final int fd, final int[][] array_filter); c++中对应的函数如下: JNIEXPORT jint JNICALL Java_JniSocketCan_setFilter  (JNIEnv *env, jclass obj, jint fd, jobjectArray array_filter){    struct can_filter *pFilte

洗牌函数[打乱数组的顺序] slice()的新运用 [原来arr.slice(start, end) 的start不是必需的]

function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min + 1) + min) } function shuffle(arr) { let _arr = arr.slice() // 创建一个源数组的副本 for (let i = 0; i < _arr.length; i++) { let j = getRandomInt(0, i) let t = _arr[i] _arr[i] = _ar

Java 1.18-1.22 数组及方法调用

在对数组开始认知的时候,我居然还没有熟练应用for循环,简直失败! 在认知方法调用的时候,数组的练习稍微少了点,可能接收的太快,思维暂时没跟上. 这周末,我对之前的for循环,数组进行了大量的操作并且参考各类联系,也算明白一二了,但还是不能使用的熟练,也许需要更多的时间来积累使用的经验和熟练度.continue和break的用法掌握了, 听课再多,不及自己多思考.不专研不思考,任谁也不会有所进展.尽管我零基础,但也是抱有想法的学习. 睡觉前,我又整理了一下思路,看了从头到尾的已学基础. 晚安!世

java初步学习之数组

(1)数组的定义 数组是一种数据结构,是一种具有相同类型的数据的集合. (2)语法 在java中定义一个数组有三种方法: ①数据类型[] 数组名称={根据类型初始化}: int[] str1={1,2,3,3,4};这种方法在定义时直接初始化,当然也确定了其空间大小. ②数据类型[] 数组名称=new 数据类型[数组空间大小]; int[] str2=new int[100]; 注:此处必须注明空间大小 ③int[] str3=new []{1,2,3,4,5};这种方法和第一种一样,都是直接进

函数指针及函数指针数组的妙用

笔者在开发某软件过程中遇到这样一个问题,前级模块传给我二进制数据,输入参数为 char* buffer和 int length,buffer是数据的首地址,length表示这批数据的长度.数据的特点是:长度不定,类型不定,由第一个字节(buffer[0])标识该数据的类型,共有256(28 )种可能性.我的任务是必须对每一种可能出现的数据类型都要作处理,并且我的模块包含若干个函数,在每个函数里面都要作类似的处理.若按通常做法,会写出如下代码: void MyFuntion( char* buff

JS封装cookie操作函数实例(设置、读取、删除)

本文实例讲述了JS封装cookie操作函数.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 /*设置cookie*/ function setCookie(name, value, iDay) {   var oDate=new Date();   oDate.setDate(oDate.getDate()+iDay);   document.cook

JS运动中的封装的部分实用函数(框架)总结

JS运动中的封装的部分实用函数(框架)总结 前段时间学习JS运动时做的很实用的几个函数,应该可以称之为小的框架了,现在总结一下.为什么不当时就总结呢?我认为所谓总结不是趁着大脑中还残留着对新知识印象的时候将其写下来,而是过了一段时间之后再回头去看,将其重新拾起,这个时候一般会有对这些新东西的新看法和新的体会,我把这个过程称为"知识的发酵".对于我来说经过 "发酵"之后的带有自己的见解和体会东西才可以称之为总结. 下面分为几个版本来说,也反映了他们的进化过程,这几个函

js原生:封装document.getElementByClassName()函数

//接口封装:封装document.getElementByClassName()函数function getElementsByClassName (cName,domTag,root) {//该函数有三个参数:第一个参数是class名(必选,字串形式):第二个参数是父容器(可选),默认为body节点:第三个参数是该DOM节点的标签名(字串形式)    if (root) {        root = typeof root == "string" ? document.getEl