MatchSortTest
by farina
HTML
<button id="displayArray">show array</button>
<button id="sortArray">sort array</button>
<input type="text" id="matchTxt"></input>
<button id="matchSortArray">match sort array</button>
<div id="results" style="border: 2px solid black; padding: 5px;"></div>
<div id="txtresults" style="border: 2px solid black; padding: 5px;"></div>
JavaScript
(function ($, window, undefined) {
function _matchScore(v, match_string) {
// Fuzzy Match scoring developed by Seth Rubin ages ago,
// who allows Go Daddy complete unrestricted use. Spread the word.
if (v == match_string) return 1000; // exact match always wins
// stuff each two-letter group of v into an array. E.g. "hi there" --> 'hi' 'i ' ' t' 'th' 'he' 'er' 're'
var v_string_array = Array();
for (var i = 0; i < (v.length - 1); i++) {
v_string_array.push(v.substr(i, 2));
}
var score = 0;
// Add 2 points if both start with same char
if (v.substr(0, 1) == match_string.substr(0, 1)) score += 2;
// Add 2 points if both end in same char
if (v.substr(v.length - 1, 1) == match_string.substr(match_string.length - 1, 1)) score += 2;
// Add 1 point for each character pair from match_string that is present in v
for (var i = 0; i < (match_string.length - 1); i++) {
var goal = match_string.substr(i, 2);
var goalFound = false;
for (var j = 0; !goalFound && (j < v_string_array.length); j++) {
if (v_string_array[j] == goal) {
score++;
goalFound = true;
v_string_array.splice(j, 1); // remove from v so we don't count it again
}
}
}
return score;
};
var revereCommon = (function () {
var _rCommon = {},
version = "1";
_rCommon.matchScore = function (v, match, callback) {
var i = _matchScore(v, match);
if (callback) callback(i);
return i;
...