I use algorithm kindly provided by TheSpanishInquisition here: http://jsperf.com/damerau-levenshtein-distance.
All credits goes there. I have only packed it into Node module.
It provides a function that takes two string arguments and returns a hash like this:
{
  steps: 5,       // Levenstein demerau distance
  relative: 0.7,  // steps / length of the longer string
  similarity: 0.3 // 1 - relative
}
Please see tests for more insights.
