skip to Main Content

how do you loop through javascript numbered variables?

let count = 5;

var test1 = "test1"
var test2 = "test2"
var test3 = "test3"
var test4 = "test4"
var test5 = "test5"

for (let i = 0; i < count; i++)
{
    console.log(test{i});  //no that don't work
}

tired a few different for loops I found but could not get anything to work.
New to all of this.

expecting to see the variable names…
test1
test2
test3
test4
test5

Maybe I’m asking the wrong question. The problem with an Object or an Array is when I assign it to Local Storage and go back and want to delete that item, if it’s in a array or object I delete everything using removeItem(keyName). That is why I wanted to created a new name/variable for each event. That way I can delete the item without removing everything else. –
jondavis4

5

Answers


  1. The correct answer is

    let count = 5;
    var tests = ["test1", "test2", "test3", "test4", "test5"];
    
    for (let i = 0; i < count; i++) {
        console.log(tests[i]);
    }
    
    Login or Signup to reply.
  2. It would be good if you change variables to a data structure that allows for easy iteration like an array, or an object.
    But If you have to loop over those variables, You could use the global window :

    let count = 5;
    
    var test1 = "test1"
    var test2 = "test2"
    var test3 = "test3"
    var test4 = "test4"
    var test5 = "test5"
    
    for (let i = 1; i <= count; i++) {
      console.log(window[`test${i}`]);
    }

    Using the right data structure is the best option:

    Array

    let count = 5; var tests = ["test1", "test2", "test3", "test4", "test5"]; 
    for (let i = 0; i < count; i++) console.log(tests[i]);

    Object

    let tests = {};
    tests["test1"] = "test1";
    tests["test2"] = "test2";
    tests["test3"] = "test3";
    tests["test4"] = "test4";
    
    for (let test in tests) 
    console.log({
      'key': test,
      'value':tests[test]
    });
    Login or Signup to reply.
  3. Explained in-line in the code.

    let count = 5;
    
    var test1 = "test1";
    var test2 = "test2";
    var test3 = "test3";
    var test4 = "test4";
    var test5 = "test5";
    var test345 = "test7262";
    // get all the window keys - might be a lot
    // all the global keys
    let keys = Object.keys(window);
    // lots of them console.log(keys, keys.length);
    /*
    const PATTERN = 'test'; // pattern to filter into (might need work if "testmealso" is one
    let filteredKeys = keys.filter(name => name.includes(PATTERN)); // one way
    */
    
    // better way perhaps:
    const regex = new RegExp("^test[^d]+", 'g');
    /* explained as
    ^test - starts with test
    [^character_group] Negation: Matches any single character that is not in character_group.
    d Matches any decimal digit.
    */
    console.log(window["test345"]); // the value of one
    // filter then now on the regex
    const matchedSites = keys.filter((key) => key.match(regex));
    console.log(matchedSites);
    
    //console.log(filteredKeys);    
    // what are they:
    matchedSites.forEach(key => {
      // log key/value pairs
      console.log(key, window[key]);
    });
    Login or Signup to reply.
  4. The problem with an Object or an Array is when I assign it to Local Storage and go back and want to delete that item, if it’s in a array or object I delete everything using removeItem(keyName). That is why I wanted to created a new name/variable for each event. That way I can delete the item without removing everything else.

    Probably needs some more refinement, but i think this would solve the issue stated:

    function saveEvent(event){
        if(localStorage.getItem("events") != null){
            const events = JSON.parse(localStorage.getItem("events"));
            events[event.name] = event.value;
            localStorage.setItem("events",events)
        }else{
            const events = JSON.stringify({ "event1": "event description?", "event2": "another description?"})
            localStorage.setItem("events",events)
        }
    }
    
    function deleteEvent(eventName){
        if(localStorage.getItem("events") != null){
            const events = JSON.parse(localStorage.getItem("events"))
            events[eventName] = undefined;
            localStorage.setItem("events",JSON.stringify(events))
        }else{
            console.error("Events doesn't exist!")
        }
    }
    

    Maybe some explanation:

    By using saveEvent(event) you would be able to either save a new event to the existing object inside the localStorage or create a new object if none exists. What the actual event-object would look obviously depends on your needs.

    By using deleteEvent(eventName) the Object is read from the localStorage, if it exists, and the event is being removed from the retrieved object. After that the modified object is saved again inside the localStorage.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search