javascript 数组增加随机数

JavaScript011

javascript 数组增加随机数,第1张

结果肯定是有重复,长度肯定不受控制,if ((aa[n]!=b)&&aa.length<38)这句话没失效

aa.length一直是等於1,写了等於没写,

aa[n]!=b这个条件,打个比方,38个数裏可能只有20个没重复,那麼aa.push(b)这句话只执行了20次,再加上之前随机添加了38个,长度肯定不会等於38

代码没错,是你思路错

JavaScript生成一个数组;

数组里有十个随机数,并且不重复;

数字的范围是一到十。

根据以上要求代码如下:

function getRandomArray()

{

var array = []

while (array.length < 10)

{

var random = Math.floor(Math.random() * 10) + 1

if (array.indexOf(random) < 0)

{

array.push(random)

}

}

return array

}

基础知识:

复制数组:

(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)

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