www.howardism.org
Babblings of an aging geek in love with the Absurd, his family, and his own hubris.... oh, and Lisp.

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);
}