Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
function soundex(str, p){
var i, j, l, r, p = isNaN(p) ? 4 : p > 10 ? 10 : p < 4 ? 4 : p,
m = {BFPV: 1, CGJKQSXZ: 2, DT: 3, L: 4, MN: 5, R: 6},
r = (s = str.replace(/[^A-Z]/g, "").split("")).splice(0, 1);
for(i = -1, l = s.length; ++i < l;)
for(j in m)
if(j.indexOf(s[i]) + 1 && r[r.length-1] != m[j] && r.push(m[j]))
break;
return r.length > p && (r.length = p), r.join("") + (new Array(p - r.length + 1)).join("0");
};
codes: JSON.parse()? Можно использовать объект JavaScript: {"A":{...}}new RegExp('[Vv\u1d5b]', 'ig'), вместо литерала /[Vv\u1d5b]/igen_ru: : ['A': 'А', 'a': 'а', 'B': 'Б', 'b': 'б'}) вместо параллельных массивов (ru: ['А', 'а', 'Б', 'б'], en: ['A', 'a', 'B', 'b']) для транслитерации в одну сторону (в вашем случае) было бы удобнее и нагляднее
Нечёткий поиск на клиенте и Soundex