Javascript会得到一个随机数,但不会相同

Javascript会得到一个随机数,但不会相同,javascript,random,Javascript,Random,我希望得到一个介于0和包含对象的数组长度之间的随机数。这几乎是工作,但我得到的数字是“未定义”有时,我不明白为什么 这是我的代码: var temp, stock = []; var x = [{'a' :' aa'},{'b ':'qsdf'},{'c':'aaa'},{'d':'ccc'},{'e':'54'},{'f':'l'}, {'a' :' bb'},{'b ':'qsdf'},{'c':'aaa'},{'d':'ccc'},{'e':'54'},

我希望得到一个介于0和包含对象的数组长度之间的随机数。这几乎是工作,但我得到的数字是“未定义”有时,我不明白为什么

这是我的代码:

var temp, stock = [];
var x = 
        [{'a' :' aa'},{'b ':'qsdf'},{'c':'aaa'},{'d':'ccc'},{'e':'54'},{'f':'l'},
         {'a' :' bb'},{'b ':'qsdf'},{'c':'aaa'},{'d':'ccc'},{'e':'54'},{'f':'l'}];

function randomize(min,max) {
    return Math.floor((Math.random()*max)+min);
}

function test(tab) {

    var tabLength = tab.length;

    if(stock.length == tabLength ) {

        alert('End')

    }else{

         temp = randomize(0,tabLength); 

        if(stock.length == 0) {

            stock += temp;
            return temp;

        }else{  

            if(stock.indexOf(temp) > -1)  {

                test(tab);

            }else{

                stock += temp;
                return temp;                
            }       
        }
    }
}



    div.onclick = function () {
        var number = test(x)
        alert(stock+' '+number)

}

洗牌数组,然后弹出一个答案。再次弹出()以获得新答案,永不重复。@dandavis谢谢您的回答。如何使用刚刚弹出()的对象的属性。在这种情况下,如果我执行var newObj=x.pop(),那么当我执行alert(newObj.a)时,我会得到“未定义”。不是所有对象都有“a”属性,它们是异构的。我相信您的数据结构不正确,无法满足您的需求,但从我的位置很难判断…@dandavis哦,是的,对不起,我的错误。。