Veera / Blog

Underscore.js and guid function

Underscore library comes with the uniqueId() function that generates globally unique IDs to use in code. But it was not enough for my Backbone models as I needed the IDs to be unique across  invocations and users, i.e. something like UUID.

I have been using this code snippet to generate pseudo unique IDs for sometime. Since it's a utility function and it made lots of sense to move it to Underscore itself. Here's how I did it.

_.mixin({
      guid : function(){
        return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
          var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
          return v.toString(16);
        });
      }
    });

Once the above code is in place, then creating a unique ID is as simple as calling _.guid().

undefined