JSFiddle - React, Tailwind, and code Playground

JavaScript

var s = [2, 4, 3, 5, 1, 7, 6, 9, 8];

var lengths = {
    0: 0
};
var predecessor = {};


for(var i = 0; i < s.length; i++) {            
    var max = -1;
    //examine all numbers to the left of s[i]
    for(var j = (i - 1); j >= 0; j--) {
        
        //Find the biggest number that is lesser than s[i]
        if(s[j] < s[i]) {
            if(s[j] > max) {
                max = s[j];
                idx = j; 
                predecessor[i] = j;
                lengths[i] = lengths[j] + 1;
            }
        }
    }
}

console.log("Lengths: [" + explode(lengths) + "]");
console.log("Predecessors: [" + explode(predecessor) + "]");

function explode(obj) {
    var str = "";
    for(var key in obj) {                
        str += obj[key] + ", ";
    }
    
    return str.replace(/, $/, "");
}