talisman
Version:
Straightforward fuzzy matching, information retrieval and NLP building blocks for JavaScript.
57 lines (46 loc) • 1.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.distance = distance;
exports.similarity = similarity;
/**
* Talisman metrics/identity
* ==========================
*
* Identity distance/similarity.
*
* [Tags]: metric, string metric.
*/
/**
* Identity distance.
*
* @param {array|string} a - First sequence.
* @param {array|string} b - Second sequence.
* @param {number} - Distance between 0 & 1.
*/
function distance(a, b) {
if (typeof a === 'string') return a === b ? 0 : 1;
if (a === b) return 0;
if (a.length !== b.length) return 1;
for (var i = 0, l = a.length; i < l; i++) {
if (a[i] !== b[i]) return 1;
}
return 0;
}
/**
* Identity similarity.
*
* @param {array|string} a - First sequence.
* @param {array|string} b - Second sequence.
* @param {number} - Similarity between 0 & 1.
*/
function similarity(a, b) {
if (typeof a === 'string') return a === b ? 1 : 0;
if (a === b) return 1;
if (a.length !== b.length) return 0;
for (var i = 0, l = a.length; i < l; i++) {
if (a[i] !== b[i]) return 0;
}
return 1;
}