2
我有一個具有自然數字鍵和字符串值的具體表,如{"192", "127", "114", "186"}
,它可以被命名爲有序表,並且還有另一個表是有序表的子集,但是沒有順序,例如{"114", "192"}
。我如何根據訂購的表格對後者進行排序?如何根據另一個有序表格對錶格進行排序?
我有一個具有自然數字鍵和字符串值的具體表,如{"192", "127", "114", "186"}
,它可以被命名爲有序表,並且還有另一個表是有序表的子集,但是沒有順序,例如{"114", "192"}
。我如何根據訂購的表格對後者進行排序?如何根據另一個有序表格對錶格進行排序?
你可以做的一件事是創建一個幫助表,將一個字符串映射到它在「有序表」中的位置。這可以讓你快速看到,給出兩個字符串,應該出現在另一個之前。
然後,您可以使用此幫助程序表爲您的排序實施比較功能。在Lua中,table.sort
有一個可選參數,它是一個自定義比較函數。該比較功能應該接受來自表格(s1
和s2
)的一對值,並且如果s1 < s2
根據您希望的順序應該返回true
。
ordered_table = {"192", "127", "114", "186"}
indexes = {}
for i, s in ipairs(ordered_table) do
indexes[s] = i
end
unordered_table = {"114", "192"}
table.sort(unordered_table, function(s1, s2)
local i1 = assert(indexes[s1])
local i2 = assert(indexes[s2])
return i1 < i2
end)
無法將字符串值轉換爲數字 –