簡體   English   中英

從 JavaScript 中的數組中選擇隨機元素返回整個數組

[英]Picking random element from array in JavaScript returns the whole array

我正在編寫一個程序來使用 JavaScript 猜測輸入,為此我必須從數組中選擇一個隨機元素。 但是,在嘗試使用 Chrome DevTools 對其進行調試后,我發現它返回的是整個數組,而不僅僅是元素。 編輯:我還確保它與用於 select 隨機元素的方法無關。 這是一些代碼:

        var alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","0","1","2","3","4","5","6","7","8","9","~","`","!","@","#","$","%","^","&","*","(",")","-","_","=","+","[","]","{","}","\\","|",";",":","'","\"",",","<",".",">","/","?"," "]
        var charset = [];
        if(document.getElementById("lowercase").checked){
            charset.push(alphabet.slice(0, 26));
        }
        if(document.getElementById("uppercase").checked){
            charset.push(alphabet.slice(26, 52));
        }
        if(document.getElementById("numbers").checked){
            charset.push(alphabet.slice(52, 62));
        }
        if(document.getElementById("special").checked){
            charset.push(alphabet.slice(62, alphabet.length));
        }
        var word = document.getElementById("input").value;
        var foundword = "";
        while(true) {
            for(i = 0; i < word.length; i++) {
                foundword += charset[Math.floor(Math.random() * charset.length)];
            }
            if(word == foundword) {
                alert("done");
                break;
            }
            foundword = "";
        }

有人可以幫忙嗎? 提前致謝!

alphabet.slice返回一個數組。

當您charset.push(alphabet.slice(.......))時,您正在推送一個數組,因此最后的charset是一個 arrays 數組。

您可以使用擴展運算符 - ... - 將推送的數組轉換為一系列值:

charset.push(...alphabet.slice(26, 52));

只是為了幫助您習慣語法,這里有幾個例子:

let arr = alphabet.slice(26, 52);
charset.push(...arr);

charset.push(...['a', 'b', 'c']);

暫無
暫無

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

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