javascriptjquery

Best way to store a key=>value array in JavaScript?


What's the best way to store a key=>value array in javascript, and how can that be looped through?

The key of each element should be a tag, such as {id} or just id and the value should be the numerical value of the id.

It should either be the element of an existing javascript class, or be a global variable which could easily be referenced through the class.

jQuery can be used.


Solution

  • That's just what a JavaScript object is:

    var myArray = {id1: 100, id2: 200, "tag with spaces": 300};
    myArray.id3 = 400;
    myArray["id4"] = 500;
    

    You can loop through it using for..in loop:

    for (var key in myArray) {
      console.log("key " + key + " has value " + myArray[key]);
    }
    

    var myArray = {
      id1: 100,
      id2: 200,
      "tag with spaces": 300
    };
    myArray.id3 = 400;
    myArray["id4"] = 500;
    
    for (var key in myArray) {
      console.log("key " + key + " has value " + myArray[key]);
    }

    See also: Working with objects (MDN).

    In ECMAScript6 there is also Map (see the browser compatibility table there):

    • An Object has a prototype, so there are default keys in the map. This could be bypassed by using map = Object.create(null) since ES5, but was seldomly done.

    • The keys of an Object are Strings and Symbols, where they can be any value for a Map.

    • You can get the size of a Map easily while you have to manually keep track of size for an Object.