Edit in JSFiddle

/**
 * @constructor
 */
var UsState = function(id, name, numElectoralVotes) {
    this.id = id;
    this.name = name;
    this.numElectoralVotes = numElectoralVotes;
};

/**
 * @param {String} query
 *
 * @return {Boolean}
 */
UsState.prototype.matchesQuery = function(query) {
    query = query.toLowerCase();
    return this.id.toLowerCase() == query
        || this.name.toLowerCase().indexOf(query) != -1;
};

/**
 * @static
 *
 * @param {Array<UsState>} usStates Sorted in place.
 *
 * @return {Array<UsState>} Same reference to input array, now sorted.
 */
UsState.sort = function(usStates) {
    usStates.sort(function(leftState, rightState) {
        var leftName = leftState.name.toLowerCase(),
            rightName = rightState.name.toLowerCase();
        return leftName < rightName ? -1 : (leftName > rightName ? 1 : 0);
    });
    
    return usStates;
};

/**
 * @return {String} Serialized state.
 *
 * @see fromString()
 */
UsState.prototype.toString = function() {
    return JSON.stringify(this);
};

/**
 * @static
 *
 * @param {String} serializedState
 *
 * @return {UsState}
 *
 * @see toString()
 */
UsState.fromString = function(serializedState) {
    return $.extend(new UsState(), JSON.parse(serializedState));
};

// DOM ready
$(function() {
    var $state = $('#state'),
        $stateMessage = $('#stateMessage');
    
    $state.typeahead({
        matcher: function(item) {
            return item.matchesQuery(this.query);
        },
        sorter: UsState.sort,
        highlighter: function(state) {
            return $.fn.typeahead.Constructor.prototype.highlighter.call(this, state.name);
        },
        updater: function(state) {
            state = UsState.fromString(state);
            $stateMessage.html('<strong>' + state.name + '</strong> has ' + state.numElectoralVotes + ' electoral votes.');
            return state.name;
        },
        source: [
            new UsState('AL', 'Alabama', 9),
            new UsState('AK', 'Alaska', 3),
            new UsState('AZ', 'Arizona', 11),
            new UsState('AR', 'Arkansas', 5),
            new UsState('CA', 'California', 55),
            new UsState('CO', 'Colorado', 10),
            new UsState('CT', 'Connecticut', 8),
            new UsState('DE', 'Delaware', 3),
            new UsState('FL', 'Florida', 27),
            new UsState('GA', 'Georgia', 17),
            new UsState('HI', 'Hawaii', 4),
            new UsState('ID', 'Idaho', 4),
            new UsState('IL', 'Illinois', 21),
            new UsState('IN', 'Indiana', 11),
            new UsState('IA', 'Iowa', 7),
            new UsState('KS', 'Kansas', 6),
            new UsState('KY', 'Kentucky', 8),
            new UsState('LA', 'Louisiana', 7),
            new UsState('ME', 'Maine', 5),
            new UsState('MD', 'Maryland', 10),
            new UsState('MA', 'Massachusetts', 11),
            new UsState('MI', 'Michigan', 15),
            new UsState('MN', 'Minnesota', 9),
            new UsState('MS', 'Mississippi', 6),
            new UsState('MO', 'Missouri', 10),
            new UsState('MT', 'Montana', 3),
            new UsState('NB', 'Nebraska', 4),
            new UsState('NV', 'Nevada', 7),
            new UsState('NH', 'New Hampshire', 5),
            new UsState('NJ', 'New Jersey', 13),
            new UsState('NM', 'New Mexico', 5),
            new UsState('NY', 'New York', 31),
            new UsState('ND', 'North Dakota', 3),
            new UsState('NC', 'North Carolina', 15),
            new UsState('OH', 'Ohio', 20),
            new UsState('OK', 'Oklahoma', 6),
            new UsState('OR', 'Oregon', 7),
            new UsState('PA', 'Pennsylvania', 21),
            new UsState('RI', 'Rhode Island', 3),
            new UsState('SC', 'South Carolina', 9),
            new UsState('SD', 'South Dakota', 4),
            new UsState('TN', 'Tennessee', 11),
            new UsState('TX', 'Texas', 34),
            new UsState('UT', 'Utah', 5),
            new UsState('VT', 'Vermont', 3),
            new UsState('VA', 'Virginia', 15),
            new UsState('WA', 'Washington', 12),
            new UsState('WV', 'West Virginia', 4),
            new UsState('WI', 'Wisconsin', 10),
            new UsState('WY', 'Wyoming', 3)
        ]
    });
});
<input type="text" id="state" />
<p id="stateMessage">Choose a US state.</p>
body {
    margin: 25px;
}

External resources loaded into this fiddle: