js实现从数组里随机获取元素

JavaScript025

js实现从数组里随机获取元素,第1张

这篇文章主要介绍了js实现从数组里随机获取元素的方法,以及个人封装的js代码分享,十分的实用,这里推荐给小伙伴们

基础知识:

复制数组:

(1)循环遍历复制(不推荐)

代码如下:

var

arry

=

[1,5,9,7],

new_arry

=

[],

n

=

0,

len

=

arry.length

for(n<lenn++){

new_arry.push(arry[n])

}

(2)concat()

方法用于连接两个或多个数组,该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本

代码如下:

var

arry

=

[1,5,9,7],

new_arry

=

arry.concat()

console.log(new_arry)

(3)slice()

方法可从已有的数组中返回选定的元素

代码如下:

var

arry

=

[1,5,9,7],

new_arry

=

arry.slice(0)

console.log(new_arry)

随机数:

Math.random()

Math.random(),返回0到1的随机数,如:0.4261967441998422

个人封装函数:

代码如下:

function

getRandom(opt)

{

var

old_arry

=

opt.arry,

range

=

opt.range

//防止超过数组的长度

range

=

range

>

old_arry.length?old_arry.length:range

var

newArray

=

[].concat(old_arry),

//拷贝原数组进行操作就不会破坏原数组

valArray

=

[]

for

(var

n

=

0

n

<

range

n++)

{

var

r

=

Math.floor(Math.random()

*

(newArray.length))

valArray.push(newArray[r])

//在原数组删掉,然后在下轮循环中就可以避免重复获取

newArray.splice(r,

1)

}

return

valArray

}

var

new_val

=

getRandom({'arry':[1,6,8,0,3],'range':3})

console.log(new_val)

是不是很好用呢,非常实用的代码,这里是从本人项目中分离出来分享给大家,希望对大家有所帮助。

在写js中,我们经常遇见 js 随机函数,总结一下最近写验证码的时候  用到过的js 随机函数

Math.random()结果为0-1间的随机数(包括0,不包括1)

Math.floor( n )参数为Number 类型 ,函数结果 为num 的整数部分

Math.round( n ) ; 参数为Number 类型。函数结果 为num 四舍五入部分

Math.ceil( n )参数为Number类型。 函数结果为大于等于n的整数

Math.ceil(Math.random()*10) : 主要获取1到10的随机整数,取0的几率极小。

Math.round(Math.random()) : 可均衡获取0到1的随机整数

Math.round(Math.random()*10)  可基本均衡获取0到10的随机整数,其中获取最小值0和最大值10的几率少一半

Math.floor(Math.random()*10) 可均衡获取0到9的随机整数

例子:

    1. 实现一个 随机 汉字

         randomChi(){   // 随机生成汉字

                return `\\u${Math.round(Math.random() * 20901 + 19968 ).toString(16)}`

           }

    2. 实现一个n - m 的整数 ( 参照于 http://www.jb51.net/article/56019.htm )

        生成 n-m , 包含n 但不包含 m的整数

            第一步算出 m -n的值,假设等于 w 

            第二步 Math.random( )  * w

            第三步 Math.random() * w +n

            第四步 parseInt( Math.random() * w +n, 10)

         生成一个 n-m ,包含 m 但不包含 n的整数

            第一步算出 m-n的值,假设等于w

            第二步Math.random()*w

            第三步Math.random()*w+n

            第四步Math.floor(Math.random()*w+n) + 1

         生成一个不包含 n -m 但都不包含 n  和 m

             第一步算出 m-n-2的值,假设等于w

              第二步Math.random()*w

              第三步Math.random()*w+n +1

               第四步Math.round(Math.random()*w+n+1) 或者 Math.ceil(Math.random()*w+n+1)

            生成n-m,包含n和m的随机数:

                第一步算出 m-n的值,假设等于w

                第二步Math.random()*w

                第三步Math.random()*w+n

                第四步Math.round(Math.random()*w+n) 或者 Math.ceil(Math.random()*w+n)

             实例: 生成800-1500的随机整数,包含800但不包含1500

                1500-800 = 700

                Math.random()*700

                var num = Math.random()*700 + 800

                num = parseInt(num, 10)

更多实例 请查看  https://github.com/Mrangmaomao

所有随机的东西都要用到随机数,js中是用到Math.random()这个方法,获取0~1之间的数。

1、Math.random()是令系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值,是Java语言常用代码。例如:double a=Math.random()*(3-1)+1,设置一个随机1到3的变量。

2、生成一个4位的随机字符串代码如下:

public static void main(String[]args){

String result=""

for(inti=0i<4i++){

//生成97-122的int型的整型

int intValue=(int)(Math.random()*26+97)

//将intValue强制转化成char类型后接到result后面

result=result+(char)intValue

}

//输出字符串

System.out.println(result)

}