| original |
function fuzzysearch (query, text) {
var i;
var character;
var currentIndex;
var lastIndex = -1;
var tlen = text.length;
var qlen = query.length;
if (qlen > tlen) {
return false;
}
if (qlen === tlen && query === text) {
return true;
}
if (text.indexOf(query) > lastIndex) {
return true;
}
for (i = 0; i < qlen; i++) {
character = query[i];
currentIndex = text.indexOf(character, lastIndex + 1);
if (currentIndex === -1) {
return false;
}
lastIndex = currentIndex;
}
return true;
}
cases.forEach(function (c) {
fuzzysearch(c[0], c[1]);
});
| ready |
| regex-based |
function escapeRegExp(str) {
return str.replace(/[-{}()*+?.^$|[\]]/g, '\\$&');
}
function toReg(query) {
var x = String(query).split('').map(escapeRegExp).join('.*?');
x = '(?:' + x + ')';
return new RegExp(x);
}
function fuzzysearch(query, text) {
if (typeof query === 'string' && typeof text === 'string' && query.length && text.length) {
return toReg(query).test(text);
}
return false;
}
cases.forEach(function (c) {
fuzzysearch(c[0], c[1]);
});
| ready |
| dfkaye-replacer-fn-based |
function fuzzysearch(query, text) {
if (typeof query === 'string' && typeof text === 'string' && query.length && text.length) {
query = query.replace(/[-{}()*+?.^$|[\]]/g , function (m) {
return '\\$&';
}).split('').join('.*?');
query = '(?:' + query + ')';
return (RegExp(query).test(text));
}
return false;
}
cases.forEach(function (c) {
fuzzysearch(c[0], c[1]);
});
| ready |
| mraleph |
function fuzzysearch (query, text) {
var tlen = text.length;
var qlen = query.length;
if (qlen > tlen) {
return false;
}
if (qlen === tlen && query === text) {
return true;
}
outer: for (var i = 0, j = 0; i < qlen; i++) {
var qch = query.charCodeAt(i);
while (j < tlen) {
if (text.charCodeAt(j++) === qch) {
continue outer;
}
}
return false;
}
return true;
}
cases.forEach(function (c) {
fuzzysearch(c[0], c[1]);
});
| ready |
| crazy-one |
function $fuzzysearch (query, text) {
var tlen = text.length;
var qlen = query.length;
if (qlen > tlen) {
return false;
}
outer: for (var i = 0, j = 0; i < qlen; i++) {
var qch = query[i];
while (j < text.length) {
if (text[j++] === qch) {
continue outer;
}
}
return false;
}
return true;
}
function toArray(str) {
var a = new Uint8Array(str.length);
for (var i = 0; i < str.length; i++) {
a[i] = str.charCodeAt(i);
}
return a;
}
function fuzzysearch(query, text) {
return $fuzzysearch(toArray(query), toArray(text));
}
cases.forEach(function (c) {
fuzzysearch(c[0], c[1]);
});
| ready |