Lua新手求助:如何返回排序后表的索引字符串以获取最少存款人
获取Lua表中存款最少的账户名
针对你的需求,分两种表结构给出解决方案:
方案1:保留原哈希表结构
你最初的表是字符串键的哈希表,table.sort无法直接排序这类表(它只处理整数索引的数组部分),直接遍历找最小值更高效:
BankAccount = {} BankAccount["Tom"] = 432 BankAccount["Henry"] = 55 BankAccount["Kath"] = 875 local min_name, min_amount = nil, math.huge -- 用pairs遍历所有键值对 for name, amount in pairs(BankAccount) do if amount < min_amount then min_amount = amount min_name = name end end print(min_name) -- 输出 Henry
逻辑:初始化最小金额为无穷大,遍历每个账户时更新最小金额及对应名字。
方案2:使用嵌套数组结构
你看到的嵌套数组是整数索引的数组,适合用table.sort自定义排序规则:
BankAccount = { {"Tom", 432}, {"Henry", 55}, {"Kath", 875}, } -- 自定义排序:按存款金额从小到大排列 table.sort(BankAccount, function(a, b) return a[2] < b[2] -- a[2]是子表的存款金额 end) -- 排序后第一个元素即为存款最少的账户 print(BankAccount[1][1]) -- 输出 Henry
逻辑:给table.sort传入比较函数,指定按子表的第二个元素(存款)排序,排序后取第一个子表的第一个元素(名字)。
两种结构的适用场景
- 哈希表:适合快速通过名字查询存款(比如
BankAccount["Tom"]直接取值) - 嵌套数组:适合需要排序、按固定顺序遍历的场景
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

