Hi all,

I cannot understand why this function isn't picking up the actual table names and is only altering the "tab" table within the function but not the intended table.

local PrimaryDepartures = {}
local PrimaryArrivals = {}
local SecondaryDepartures = {}
local SecondaryArrivals = {}

local PrimaryName = "Kythria"
local SecondaryName = "Skiathos"

function f.Sort()
	local tab, key, imp, times
	for i = 1 ,4 do
		if i == 1 then tab, key, imp = PrimaryDepartures, PrimaryName, "Origin"
		elseif i == 2 then tab, key, imp = PrimaryArrivals, PrimaryName, "Destination"
		elseif i == 3 then tab, key, imp = SecondaryDepartures, SecondaryName, "Origin"
		elseif i == 4 then tab, key, imp = SecondaryArrivals, SecondaryName, "Destination" end
		local times = {}
		tab = {}
		local l = 1
		for _, v in pairs(script.Parent:GetChildren()) do
			if v:IsA("Folder") and v:FindFirstChild(imp).Value == key then
				local t = tonumber(string.sub(v.Time.Value, 1, 2).."."..string.sub(v.Time.Value, 4, 5))
				times[l] = t
				tab[l] = v
				l = l + 1
			end
		end
		repeat 
			local swapped = false
			print(#tab)
			print(#PrimaryDepartures)
			for i=2, #tab do
				if times[i-1] > times[i] then
					times[i-1], times[i] = times[i], times[i-1]
					tab[i-1], tab[i] = tab[i], tab[i-1]
					swapped = true
				end
			end
		until not swapped
	end
end

print(#tab) print(#PrimaryDepartures)

This results to

4 0

in the output.

It appears that the function isn't writing to the table, I don't understand as to why as I set tab = --table. I could always repeat this 4 times with each specific table, but I'd rather do this as it is more efficient. What can I do to fix this?

Thanks