all files / util/ levenshtein.js

7.14% Statements 1/14
0% Branches 0/6
0% Functions 0/1
8.33% Lines 1/12
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20                                      
export default function levenshtein(a, b){
  let m = []
  for(let i = 0; i <= b.length; i++) {
    m[i] = [i]
    if(i === 0) continue;
    let ib = i-1
    for(let j = 0; j <= a.length; j++){
      m[0][j] = j
      if(j === 0) continue;
      let jb = j-1
      m[i][j] = b.charAt(ib) === a.charAt(jb) ? m[ib][jb] : Math.min(
        m[ib][jb]+1,
        m[i][jb]+1,
        m[ib][j]+1
      )
    }
  }
  return m
}