日期:2014-05-16 浏览次数:20537 次
function ran_Arr_2(oArr) {
var arrNum = [];
var tArr = [];//新数组
var random_x;
for(var i=oArr.length;i>0;i--) {
random_x = Math.floor(Math.random()*i); // 取得一个随机数
arrNum.push(random_x);//压进位置
for(var j=0;j<arrNum.length-1;j++) {
if( random_x >= arrNum[j])
random_x++;
}
tArr.push(oArr[random_x]); //压进数组
}
return tArr; //返回新数组
}
function ran_Arr_3(oArr) {
var oArr_copy = oArr.slice(0);//复制原数组
var tArr = [];//新数组
var random_x;
for(var i=oArr.length;i>0;i--) {
random_x = Math.floor(Math.random()*i); // 取得一个随机数
tArr.push(oArr_copy[random_x]); //压进数组
oArr_copy[random_x] = oArr_copy[i-1];
}
return tArr; //返回新数组
}
function ran_Arr_4(oArr) {
var temp_x; //临时交换数
var tArr = oArr.slice(0);//新数组,复制原数组
var random_x;
for(var i=oArr.length;i>0;i--) {
random_x = Math.floor(Math.random()*i); // 取得一个随机数
temp_x = tArr[random_x];
tArr[random_x] = tArr[i-1];
tArr[i-1] = temp_x;
}
return tArr; //返回新数组
}
var a = [1, 2, 3, 4, 5, 6,7];
var b = [2, 6,10];
var isok = true;
while (true) {
isok = true;
var lena = a.length;
var lenb = b.length;
if (lenb >= lena) {
break;
}
var rand = Math.round(Math.random() * (lena-1));
for (var i = 0; i < lenb; i++) {
if (b[i] == a[rand]) {
isok = false;
break;
}
}
if (isok == true) {
b.push(a[rand]);
}
}
document.getElementById("div1").innerHTML =b.valueOf();
------解决方案--------------------
路过
------解决方案--------------------
基本思路:随机读取数组1中的一个数据,将其与数组2中的数据进行比较,如果存在,就另读取,直到读到新数据存到数组2中,当数组2的长度等于数组1的长度时,停止读取数据,输出数组2。
给我的感觉你的意思就是比较两个数组arr1,arr2,如果arr2中没有arr1的数据,就是当前arr1的数据写入arr2中,并且arr2的长度不能大于arr1的长度,并没有存在排序的问题?!
var arr1 = [1,2,3,5,6,8,9];
var arr2 = [4,6];
function addSome(arr1,arr2){
if(arr1==null||arr1.length==0) return [];
if(arr2==null||arr2.length==0) return arr1;
var length = arr2.length;
var obj = new Object();
for(var i=0; i<length; i++){
eval("obj.pop" + arr2[i] + "='" + arr2[i] + "';");
}
var l = arr1.length;
for(var i=0;i<l;i++) {
if(eval("typeof obj.pop" + arr1[i] + "=='undefined'")){
arr2.push(arr1[i]);
}
if(arr2.length==l){
break;
}
}
return arr2.sort(); //如果要排序的话,再加上sort
}
var t = addSome(arr1,arr2);
alert(t);
------解决方案--------------------