题目一:
JavaScript 数组随机不重复元素
实际应用可能需要从数组元素中随机取出几个元素,并且要保证这几个元素不重复。
有些数组可能有重复的元素,那么可能需要首先去除这些重复的元素。
代码与解析:
var theArray=[1,3,2,4,5,9,10,20,15];//声明一个数组,将会从此数组取元素function done(num,arr){//此函数实现了取出指定个数不重复元素效果,第一个参数是要取的个数,第二个是数组对象var newArray=[];//声明一个空数组,用来存放取出的元素。for(var index=0;index<num;index++){//取出指定个数的数组元素,这里采用for循环遍历的方式。var n=Math.floor(Math.random()*theArray.length);//通过随机数*数组的长度可以获取随机的数组索引,并将其存入变量n。newArray.push(theArray[n]);//将获取的数组元素存入新的数组。theArray.splice(n,1);//删除此索引位置的数组元素。}return newArray+"";//将数组转换为字符串并返回。
}
console.log(done(2,theArray));
相关知识:
Math.floor()可以对一个数字进行下舍入操作。
返回值是小于等于参数,并与之最接近的整数。
Math.random方法可以生成一个随机数。
返回的随机数介于0-1之间。
特别说明:返回值不包括1,也就是返回值是大于等于0小于1。代码实例如下:
let getRandomNum=(m,n)=>{return parseInt(Math.random()*(n-m)+m);
}
console.log(getRandomNum(20,50));
//结果为 47
JavaScript splice()此方法对数组具有"剪接"功能。
详细见 splice方法。