JSFiddle - React, Tailwind, and code Playground

JavaScript

class LongestChain {
	static onEven (number) {
		return number / 2;
	}
	
	static onOdd (number) {
		return 3 * number + 1;
	}
	
	static iterate (number) {
		number = number % 2  === 0 ? this.onEven(number) : this.onOdd(number);
		// Return number of iterations
		return number > 1 ? this.iterate(number) + 1 : 1;
	}
	
	static compute (topNumber) {
		let maxProducer;
		let maxIterations = 0;
		// Higher numbers have higher possibilities of producing more iterations,
		// start from the top
		for (let n = topNumber; n > 0; n--) {
			const currIterations = this.iterate(n);

			if (currIterations > maxIterations) {
				maxProducer = n;
				maxIterations = currIterations;
			}
		}
		
		return maxProducer;
	}
}

const result = LongestChain.compute(1000000);
/* Longest chain producer for 1000000 is 837799 with 524 iterations */
console.log(result);