How would you sort Table2 to be like Table1?
local Table1 = {1,3,4,2,5}
local Table2 = {5,4,3,2,1}
Change Table2 to {1, 3, 4, 2, 5}?
How would you sort Table2 to be like Table1?
local Table1 = {1,3,4,2,5}
local Table2 = {5,4,3,2,1}
Change Table2 to {1, 3, 4, 2, 5}?
I dont understand the use of this, those numbers are keys? or are values?
Specifically for the tables you are showing… you could do something like this:
local Table1 = {1, 3, 4, 2, 5}
local Table2 = {5, 4, 3, 2, 1}
local tempTable = {}
for i, v in ipairs(Table1) do
tempTable[v] = i
end
table.sort(Table2, function(a, b)
return tempTable[a] < tempTable[b]
end)
warn(Table2)
This is the output of table2:
{
[1] = 1,
[2] = 3,
[3] = 4,
[4] = 2,
[5] = 5
}
They don’t want the elements to be sorted(according to what they posted as examples) and you also don’t provide any further information about how they’re going to use table.sort
.
You can just search ever other thread regarding the same question or look at the example @Dev_Peashie has displayed above.
The only use case I see for this is checking if 2 tables are equal(in the sense that they have the exact same elements or no) however even that won’t work if you try to directly compare the 2 tables(by doing Table1 == Table2
) so I thought to write you a simple function for it:
local Table1 = {1,3,4,2,5}
local Table2 = {5,4,3,2,1}
--Receives two tables t1, t2 as input and returns if they have the same elements
function HaveSameElements(t1: {any}, t2: {any}): boolean
--This line of code ensures we always copy the table with the least amount of elements
if #t1 < #t2 then t1, t2 = t2, t1 end
--Creates a copy of t2 so we don't accidently damage the data in the real table
local t2Copy = {}
for i, v in pairs(t2) do t2Copy[i] = v end
--Loops through all elements of t1
for i, v in pairs(t1) do
--Searches for the first occurance in t2
local index = table.find(t2Copy, v)
--If it doesn't find one, the tables are not equal
if not index then return false end
--If it does it removes it from t2
table.remove(t2Copy, index)
end
--If t2 has no elements left, the tables are equal, else they aren't
return (#t2Copy == 0)
end
print(HaveSameElements(Table1, Table2)) --true
Note: this only works for arrays, not dictionaries
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.