var adressTable=new Array("image/01.png","image/02.png","image/03.png","image/04.png","image/05.png","image/06.png"
,"image/07.png","image/08.png","image/09.png","image/10.png","image/11.png","image/12.png","image/13.png","image/14.png","image/15.png");
var newArray=new Array();
   getNum(newArray,adressTable);
alert(newArray[0]);
function getNum(a,b){
while(a.length<=15){
var index = Math.floor(Math.random() * 15);
for(j=0;j<a.length;j++){
if(a[j]==b[index])
  {
break;
   }
else
   {
var e=b[index];
a.push(e);
n++;
  }
}
  }
return a;

}浏览好像运行到while循环中就挑不出来了,求大神看看JavaScript函数数组

解决方案 »

  1.   

    你这是想无序添加么?因为你一开始a.length=0,所以for循环一直不会进else里面所以a.length一直等于0
      

  2.   

    都没执行for循环里面的内容,判断下当a.length==0时的添加数组元素
      

  3.   

    我的思路是这样的:循环一次得到一个0-15内的整数,然后把这个数adressTable[index]添加到空数组newArray中,如果有重复就跳过,直到newArray数组的长度为15
      

  4.   


    var adressTable=new Array("image/01.png","image/02.png","image/03.png","image/04.png","image/05.png","image/06.png"
    ,"image/07.png","image/08.png","image/09.png","image/10.png","image/11.png","image/12.png","image/13.png","image/14.png","image/15.png");
    var newArray=new Array();
    getNum(newArray,adressTable);
    alert(newArray[0]);
    function getNum(a,b){
        while(a.length<=15){
            var index = Math.floor(Math.random() * 15);
            var ft=false;
             for(j=0;j<a.length;j++){
                if(a[j]==b[index]){
                    ft=true;
                    break;
                 }
            }
            if(!ft){
                var e=b[index];
                a.push(e);
                n++;
            }
        }
        return a;  
    }
    试试
      

  5.   

    var adressTable=new Array("image/01.png","image/02.png","image/03.png","image/04.png","image/05.png","image/06.png"
    ,"image/07.png","image/08.png","image/09.png","image/10.png","image/11.png","image/12.png","image/13.png","image/14.png","image/15.png");
    var newArray=new Array();
    function getNum(a,b){
        while(a.length<=5){
            var index = Math.floor(Math.random() * 15);
            var ft=function(){
                for(j=0;j<a.length;j++){
                    if(a[j]==b[index]){
                        return true;
                    }
                }
                var e=b[index];
                a.push(e);
                return false;
            }();
        }
        return a;  
    }
    getNum(newArray,adressTable);
    for(var i=0;i<newArray.length;i++){
        alert(newArray[i]);
    }
    试试这个
    把条件改小一点
    15的概率太小了
      

  6.   

    算是无序吧,得到的效果只要和adressTable的顺序不一样就可以,所以我就用随机函数,来随机把adressTable[]中的元素添加到newArray[]中
      

  7.   

    没用啊,我要的效果就是要得到和adressTable数组长度一样的新数组,只是里面的元素的顺序不一样。
      

  8.   

    没用啊,我要的效果就是要得到和adressTable数组长度一样的新数组,只是里面的元素的顺序不一样。改成5可以运行,为啥改成15就不行了