Project Euler: Problem 12

**Too Slow **
This code works, but it is very slow. Is there a way to improve it?

const numbersTriangles = [];
function sumOfFirstsNumbers(n){
    let sum = 0; for(let i = 1; i < n; i++) sum += i
    return sum;
}

function divisibleTriangleNumber(factorsNumbers, num = 100){
    let factors = [];
    const setValueForJValue = num - 100, n = num + 100;
    const setValueForIValue = num <= 100 ? 2 : setValueForJValue + 2;

    for(let i = setValueForIValue; i <= num + 1; i++){
        let sum = sumOfFirstsNumbers(i);
        numbersTriangles.push(sum);
    }

    for(let j = setValueForJValue; j < numbersTriangles.length; j++){
        for(let k = 1; k <= numbersTriangles[j]; k++){
            if(numbersTriangles[j] % k == 0) factors.push(k);
        }

        if(!(factors.length <= factorsNumbers)){
            return numbersTriangles[j];
        } factors = [];
    }
    return divisibleTriangleNumber(factorsNumbers, n);
}

the Challenge:
Problem 12