我在 Lua 中有一個表,其中包含如下陣列:
lines =
{
{"red", "blue", "green", "yellow"},
{1,4,3,2}
}
我需要按第二個陣列的順序對表進行排序,所以它最終如下所示:
lines =
{
{"red", "yellow", "green", "blue"},
{1,2,3,4}
}
我正在嘗試使用如下 table.sort ,但這似乎想將字串與 int 進行比較:
table.sort(lines, function (a, b)
return a[2]<b[2]
end)
我該怎么做呢?
uj5u.com熱心網友回復:
以通常的方式對第二行進行排序,
然后根據第二行在第一行中設定正確的順序
local lines = {
{"red", "blue", "green", "yellow"},
{1,4,3,2}
}
local tmp = {}
for j = 1, #lines[2] do
tmp[lines[2][j]] = lines[1][j]
end
table.sort(lines[2])
for j = 1, #lines[2] do
lines[1][j] = tmp[lines[2][j]]
end
uj5u.com熱心網友回復:
你做得不好。該函式table.sort(list, comp)對給定表的元素進行排序,并且您正在對lines表進行排序,因此“排序”您擁有的兩個表而不是對每個表進行排序,正確的方法應該是:
table.sort(lines[1])
table.sort(lines[2])
假設您將在串列中添加更多表格,則為:
for _, v in ipairs(lines) do
table.sort(v)
end
編輯:這是真正的解決方案:
local new = {}
for i, v in ipairs(lines[2]) do
new[i] = lines[1][v]
end
lines[1] = new
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/472078.html
上一篇:有沒有辦法用前導零對數字進行排序,比如字串,否則就像數字一樣?
下一篇:在元素中間添加新標簽
