1:先随机生成一组数字,并插入数组中:
function randomArray(len, min, max) { if( len > (max - min +1) ){throw new Error(‘len > (max - min +1)‘)} //检查所设定数组是否超出预定总数,如果是则抛出异常 var result = []; for( var i = 0; i < len; i++){ var e = Math.floor(Math.random()*( max - min +1) + min); result.push(e); } return result; } console.dir( randomArray(6, 2, 7) );
2:第一步当中已经随机生成一组数组,但数组里面的数字有可能是重复的,所以如果要做到数组里面的数字不重复出现,就得实现数组去重复项:
function check(result, e){ for( i = 0; i < result.length; i++){ if( result[i] == e){ //遍历数组,查看数组里面的数字是否与正在生成的e相同,如果是,则返回true; return true; } } return false; }
3:已经有检查数组中是否有重复项的方法了,但要把check函数在result.puse(e)前调用,所以完整代码如下:
function randomArray(len, min, max) { if( len > (max - min +1) ){throw new Error(‘len > (max - min +1)‘)} //检查所设定数组是否超出预定总数,如果是则抛出异常 var result = []; for( var i = 0; i < len; i++){ do{ var e = Math.floor(Math.random()*( max - min +1) + min); } while( check(result, e) ); result.push(e); } return result; } function check(result, e){ for( i = 0; i < result.length; i++){ if( result[i] == e){ //遍历数组,查看数组里面的数字是否与正在生成的e相同,如果是,则返回true; return true; } } return false; } console.dir( randomArray(6, 2, 7) );
还有其它数组去重方法,把使用过的记录下来当做个备份:
1:用hasOwnProperty。
hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。
function check(result, e) { for (var i = 0; i < result.length; i++) { if( result.hasOwnProperty(e) ) { return true; } } return false; }
时间: 2024-10-11 22:52:29