簡體   English   中英

從數組生成一個隨機索引,但排除一個。 JavaScript的

[英]Generate one random index from an array but exclude one. javascript

我需要從一個數組生成一個隨機數,但要排除一個索引並返回該隨機數的索引。
我嘗試了這個:

function randNum(arr,excludeNum){
    var randNumber = Math.floor(Math.random()*arr.length);
    if(arr[randNumber]==excludeNum){
        randNum(arr,excludeNum);
    }else{
        return randNumber;
    }
}
alert(randNum([7, 10, 11],7));

但是有時它會返回我想要它返回的數字,有時它返回的是不確定的。
問題是什么?

這是因為當生成的隨機數是您要排除的數字時,您的函數不返回任何內容。 在if子句中向randNum函數調用添加return

function randNum(arr,excludeNum){
    var randNumber = Math.floor(Math.random()*arr.length);
    if(arr[randNumber]==excludeNum){
        return randNum(arr,excludeNum);
    }else{
        return randNumber;
    }
}
alert(randNum([7, 10, 11],7));

您需要在randNum(arr,excludeNum);前面randNum(arr,excludeNum); return關鍵字randNum(arr,excludeNum);

因為您使用的是地板,最終堆棧會填滿。 (我也認為你錯過了回報)

為什么不從數組中刪除該數字並在其余數字中選擇一個隨機索引呢?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM