JSFiddle - React, Tailwind, and code Playground
by Timatnet
JavaScript
var a = {a: 2, b: 0.1, c: 0.5, f: 0.5};
var b = {a: 10, b: 10, c: 10, f: 10};
/**
* Обобщенный коэффициент Jaccard
*/
function intersect(A, B) {
var intersection = {};
for(var key in A) {
if(B[key])
intersection[key] = Math.min(A[key],B[key])*0.5 + Math.max(A[key],B[key]);
}
return intersection;
}
function set_size(A) {
// var a = Object.keys(A).length;
var a = 0;
for(var key in A) a += A[key];
return a;
}
function jaccard(A, B) {
var a = set_size(A);
var b = set_size(B);
var c = set_size(intersect(A,B));
alert(JSON.stringify({a:a,b:b,c:c}));
return c/(a+b-c);
}
/**
* END Обобщенный коэффициент Jaccard
*/
alert(JSON.stringify(intersect(a,b)));
alert(JSON.stringify(jaccard(a,b)));