Search code examples
javascriptsimilaritytrigonometry

JavaScript Cosine similarity function


I am trying to create a cosine similarity function and then display the results in a HTML element. I have written the following:

function cosinesim(A,B){
        var dotproduct=0;
        var mA=0;
        var mB=0;
        for(i = 0; i < A.length;){
            dotproduct += (A[i] * B[i]);
            mA += (A[i]*A[i]);
            mB += (B[i]*B[i]);
        }
        mA = Math.sqrt(mA);
        mB = Math.sqrt(mB);
        var similarity = (dotproduct)/(mA)*(mB)
        return similarity;
    }

//.....

var array1 = [1,0,0,1];
var array2 = [1,0,0,0];

var p = cosinesim(array1,array2);
document.getElementById("sim").innerHTML = String(p);

I have tested and both the arrays I am inputting are the same length, however when my code runs to this bit it crashes and I cant seem to find what is wrong.

Any help is appreciated, thanks.


Solution

  • you missed i++ in your loop which leads to an endless one

    replacing for(i = 0; i < A.length;) to for(i = 0; i < A.length;i++) fixed the issue