Data Structures

Let’s suppose we have all the information and we want to tell a person that she is Merlin and knows who everyone is… how would we organize that data?

Lists

Simple Lists

How about this database?

database = [ 'dogs', 32, 'cats', 42, 'birds', 5 ];

Access with subscripts?

database[1] // 'dogs'

Tuples

Better organization:

database = [ ['dogs', 32], ['cats', 42], ['birds', 5] ];

How many pets in our database?

database.length // 3

Helper Functions

Lists are fine if you have functions to help:

function pets(data, id) {
    return data[id];
}

function pet_name(data, id) {
    return pets(data, id)[0];
}

function pet_amount(data, id) {
    return pets(data, id)[1];
}

pet_name(database, 2)   // => 'birds'
pet_amount(database, 2) // => 5

Looping

Display all our pets?

for (var i=0; i < database.length; i++) {
   console.log( "We have " + pet_amount(database, i) +
                       " " + pet_name(database, i) );
}

Maps

Maps are better for data:

database = { 'dogs': 32, 'cats': 42, 'birds': 5 };

The pythonic approach (called dictionaries):

database['dogs']

JavaScript is easier:

database.dogs //> 32

Looping

Quite easy too:

for (var pet in database) {
   console.log("We have " + database[key] + " " + key);
}