Find Users

by Matthew Keefe

JavaScript

function Users(users) {
    var me = this;
    this.idMap = {};
    this.titleMap = {};
    this.users = users;

    users.forEach(function(user) {
        this.idMap[user.Id] = this.idMap[user.Id] || [];
        this.idMap[user.Id].push(user);
        
        this.titleMap[user.Title] = this.titleMap[user.Title] || [];
        this.titleMap[user.Title].push(user);
    }.bind(this));
}

Users.prototype.findByTitle = function(title) {
    return this.titleMap[title];
};

Users.prototype.findById = function(id) {
    return this.idMap[id];
};




// Helper functions
function User(id, title) {
    return {
        Id: id,
        Title: title
    };
}

var _users = [];
for (var i = 1; i < 1000; i++) {
    var id = (i).toString();
    var title = "Title" + id;
    _users.push(User(id, title));
}

var users = new Users(_users);

console.log(users.findById("2"));
console.log(users.findByTitle("Title10"));