0

I'm writing a program to guess input using JavaScript, and to do it I have to pick a random element from an array. However, after trying to debug it with Chrome DevTools, I found out that it's returning the whole array instead of just the element. EDIT: I also made sure it had nothing to do with the method used to select a random element. Here's some code:

        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 = "";
        }

Could anyone help? Thanks in advance!

1 Answer 1

2

alphabet.slice returns an array.

When you charset.push(alphabet.slice(.......)) you are pushing an array, so at the end charset is an array of arrays.

You can use the spread operator - ... - to have the pushed array converted to a series of values:

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

Just to help you get used to the syntax, here are a couple more examples:

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

charset.push(...['a', 'b', 'c']);
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.