JSFiddle - React, Tailwind, and code Playground

HTML

<h3>Take a look in your javascript console <i>(F12)</i> and go through the skills.</h3>

<h3>Skill_8, for example, has several recursions in it.</h3>

JavaScript

var skill = [
	//[ID, "NAME", TMLEVEL, Learn, Mastery, Prerequisite, PrerequisiteLvl],
	[0,	"Steel Punch",	0,	0,	0,	null,	null],
	[1,	"Shockwave",	1,	1,	2,	null,	null],
	[2,	"Bull's Eye",	10,	2,	2,	7,		null],
	[3,	"Burning Rave",	20,	2,	2,	null,	null],
	[4,	"Shockvibe",	20,	1,	2,	null,	null],
	[5,	"Sense Breaker",20,	1,	2,	null,	null],
	[6,	"Luck Breaker",	20,	1,	2,	null,	null],
	[7,	"Pumping Heart",25,	3,	3,	3,		1],
	[8,	"Armor Breaker",30,	2,	2,	7,		10],
	[9,	"Upper Smash",	40,	2,	2,	2,		10],
	[10,"Hyper Beat",	45,	4,	3,	[2,3],	[10,10]],
	[11,"Tornado Bomb",	50,	3,	3,	8,		1]
];

/////////////////////////////////////////////////////////////////////////
////////////////////// The functions ////////////////////////////////////
/////////////////////////////////////////////////////////////////////////

Array.prototype.setPrerequisites = function(){
	if (typeof this[5] === "number")
	{
		this[5]=skill[getPosOfSkill(this[5])];
		this[5].setPrerequisites();
	}
	else if (this[5] instanceof Array)
	{
		if(this[5].isSkill()) this[5].setPrerequisites();
		else
		{
			for(var i = 0; i < this[5].length; i++)
			{
				this[5][i]=skill[getPosOfSkill(this[5][i])];
				this[5][i].setPrerequisites();
			}
		}
	}
}

Array.prototype.isSkill = function(){
	return this.length==7 && typeof this[1]==="string";
}

function getPosOfSkill(id){
	for(var i=0; i<skill.length; i++) if(skill[i][0]==id) return i;
	return false;
}

/////////////////////////////////////////////////////////////////////////
////////////////////////// Your code ////////////////////////////////////
/////////////////////////////////////////////////////////////////////////

for(var i = 0; i < skill.length; i++) skill[i].setPrerequisites();
	
console.log(skill);